HashMap和TreeMap的区别?
1、概述
一般而言,在map中插入、删除、定位元素,HashMap是最好的选择。
TreeMap实现了SortMap接口,可以将元素按照顺序取出(不是放入的顺序),一般默认是自然升序,也可以自定义顺序。
所以如果需要按照自然顺序或者自定义顺序遍历键,那么TreeMap会更好。
(另外,LinkedHashMap内部有一个链表,在取出时可以按照元素放入的顺序取)
2、代码分析
(1)HashMap取出为无序;TreeMap为自然顺序升序。
Map<String,String> map=new HashMap<>();
map.put("k", "CCC");
map.put("g", "BBB");
map.put("a", "EEE");
map.put("y", "DDD");
map.put("o", "AAA");
for(String key:map.keySet()){
System.out.println(key+"-----"+map.get(key));
}
System.out.println("********************");
Map<String,String> map2=new TreeMap<>();
map2.put("k", "CCC");
map2.put("g", "BBB");
map2.put("a", "EEE");
map2.put("y", "DDD");
map2.put("o", "AAA");
for(String key:map2.keySet()){
System.out.println(key+"-----"+map2.get(key));
}
运行结果:
(2)TreeMap实现取出元素自定义排序
排序容器分析推荐:
容器排序:TreeMap和TreeSet实现自定义排序的使用方法?两者的区别?