Bootstrap

Java中的TreeMap[78]

Java中的TreeMap[78]




一、TreeMap概念

1.基于二叉树的红黑树实现;
2.根据哈希值排序的,想实现自定义类排序需要类实现Comparable比较器接口;
3.存放自定义类需要重写hashCode与equals方法;
4.键如果相同,则会保持键的数据和位置,但修改其值;

二、代码演示

private static void TreeMap(){
   Map<Cat,Integer> map=new TreeMap<>();
   //自定义类中的键相同,则会保持键,修改值
   map.put(new Cat("狸花",1), 1);
   map.put(new Cat("橘花",2), 2);
   map.put(new Cat("三花",1), 3);
   map.forEach((k,v)->System.out.println(k+"->"+v));
}
//自定义类存放map需要实现hashCode和equals方法,实现排序需要实现Comparable比较器
class Cat implements Comparable<Cat>{
   private int id;
   private String name;

   @Override
   public boolean equals(Object o) {
       if (this == o) {
           return true;
       }
       if (o == null || getClass() != o.getClass()) {
           return false;
       }
       Cat cat = (Cat) o;
       return id == cat.id &&
               Objects.equals(name, cat.name);
   }

   @Override
   public int hashCode() {
       return Objects.hash(id, name);
   }

   @Override
   public String toString() {
       return "Cat{" +
               "id=" + id +
               ", name='" + name + '\'' +
               '}';
   }

   public Cat(String n, int i){
       this.id=i;
       this.name=n;
   }
   public int getId() {
       return id;
   }

   public String getName() {
       return name;
   }

   @Override
   public int compareTo(Cat o) {
       return this.getId()-o.getId();
   }
}

三.数据结构小结

本章概述了TreeMap的使用,那么数据结构到这先告一段落了,
1.数组;2.链表;3.二叉树(红黑树);4.哈希表(数组+链表+jdk1.8后的红黑树);5.栈;6.队列;系列主要讲了这六种数据结构,都是使用比较多的,没事常看看;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

;