HashMap,LinkHashMap和TreeMap差异总结

HashMap,LinkHashMap和TreeMap各有各的功效。

 

//TreeMap如果你要按自然顺序或自定义顺序遍历键,它是不错的选择,从其中取出来是排序后的键值对

Map map = new TreeMap(); 

-------------------------------------------------------------------------------------------------------

import java.util.Comparator; 

import java.util.TreeMap; 

publicclass Demo{ 

publicstaticvoid main(String[] args) { 

//自然状态

TreeMap<String, String> treeMap1 = new TreeMap<String, String>(); 

treeMap1.put("2""1"); 

treeMap1.put("b""1"); 

treeMap1.put("1""1"); 

treeMap1.put("a""1"); 

System.out.println("result-treeMap1="+treeMap1); 

//指定排序器

TreeMap<String, String> treeMap2 = new TreeMap<String, String>(new Comparator<String>(){ 

/*

* int compare(Object o1, Object o2) 返回一个基本类型的整型,

* 返回负数表示:o1 小于o2,

* 返回0 表示:o1和o2相等,

* 返回正数表示:o1大于o2。

*/

publicint compare(String o1, String o2) { 

//指定排序器按照降序排列

return o2.compareTo(o1); 

}); 

treeMap2.put("2""1"); 

treeMap2.put("b""1"); 

treeMap2.put("1""1"); 

treeMap2.put("a""1"); 

System.out.println("result-treeMap2="+treeMap2); 

自然状态:treeMap1={1=12=1, a=1, b=1

降序状态:treeMap2={b=1, a=12=11=1

//注:TreeMap是参考网上一名作者的案例

 

//LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列.

Map map = new LinkedHashMap(); 

 Map lhm = new LinkedHashMap();
  lhm.put("1", "sddddf");
  lhm.put("3", "2ddd22");
  lhm.put("2", "3ddd33");

  for(Iterator t = lhm.keySet().iterator();t.hasNext();){
    System.out.println((String) lhm.get(t.next()));
  }

结果:

sddddf
2ddd22
3ddd33

 

//HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。

Map map = new HashMap(); 

 

你可能感兴趣的:(HashMap)