HashMap是通过 key的hash值进行分桶存放的。
与HashMap不同,TreeMap则是通过排序比较进行分桶存放。默认根据其键的自然顺序进行排序,或者根据创建时构造函数提供的Comparator 进行排序,具体取决于使用的构造方法。
样例1
Map<String, String> map = new TreeMap<>();
map.put("四个字符", "hello, world");
map.put("4个字符", "王德发");
System.out.println(map.get("四个字符"));
System.out.println(map.get("4个字符"));
结果将打印什么呢?
hello, world
王德发
但是如果给TreeMap的构造器加上参数:
Map<String, String> map = new TreeMap<>(Comparator.comparing(v -> v.length()));
map.put("四个字符", "hello, world");
map.put("4个字符", "王德发");
System.out.println(map.get("四个字符"));
System.out.println(map.get("4个字符"));
结果为:
王德发
王德发