TreeMap的使用

HashMap实现类:特点,无序,唯一

特点是按照key进行总结的,因为key底层遵照哈希表的结构(数组+链表)

哈希表的原理:必须放入这个集合的数据对应的那个类:必须重写hashCode方法,和equals方法

HashMap jdk1.2出来的 效率高 线程不安全 key可以存入null值,并且key的null值也遵循唯一的特点

Hashtable jdk1.0出来的 效率低 线程安全 key不可以存入null值

 

LinkedHashMap实现类:特点 唯一 , 有序(按照输入顺序进行输出)

 

TreeMap实现类:特点 ,唯一,有序(按照升序或者降序)

原理:二叉树,key遵照二叉树的特点,放入集合key的数据对应类型的内部一定要实现比较器(内部比较器,外部比较器,外部比较器)二选一

 

TreeMap的使用

key的类型为String类型

Map<String,Integer> map = new java.util.TreeMap<>();
map.put("blili",1234);
map.put("cliil",545);
map.put("blili",574567);
map.put("alili",65465);
map.put("dlili",456);
System.out.println(map.size());
System.out.println(map);

key的类型是一个自定义的引用类型

内部比较器

public int compareTo(Stundent2 o) {
  //return this.getAge() - o.getAge();
  return this.getName().compareTo(o.getName());//比较名字
}

外部 比较器

package WangGang01;

import java.util.Comparator;
import java.util.TreeMap;

public class Test03 {
  public static void main(String[] args) {
      TreeMap<Stundent2, Integer> map = new TreeMap<>(new Comparator<Stundent2>() {
          @Override
          public int compare(Stundent2 o1, Stundent2 o2) {
              return ((Double)o1.getHeight()).compareTo((Double)o2.getHeight());
          }
      });
      map.put(new Stundent2(18,"alili",140.8),1234);
      map.put(new Stundent2(15,"clili",167.8),12634);
      map.put(new Stundent2(19,"dlili",150.8),12834);
      map.put(new Stundent2(17,"blili",160.7),14234);
      map.put(new Stundent2(20,"blili",160.8),12354);
      System.out.println(map.size());
      System.out.println(map);

  }
}
上一篇:面经-Map


下一篇:java list集合