HashMap,LinkedHashMap和TreeMap之间的区别

问题:

Java中的HashMapLinkedHashMapTreeMap有什么区别?
我没有看到输出有差异,因为三者都有keySetvalues。什么是Hashtable

Map m1 = new HashMap();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet()); 
print(m1.values()); 

SortedMap sm = new TreeMap();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet()); 
print(sm.values());

LinkedHashMap lm = new LinkedHashMap();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet()); 
print(lm.values());

回答:

所有三个类都实现了Map接口,并提供大部分相同的功能。最重要的区别是将通过条目进行迭代的顺序:

  •  HashMap绝对不能保证迭代顺序。当添加新元素时,它可以(并且将)甚至完全改变。
  •  根据compareTo()方法(或外部提供的Comparator),按照“自然排序”键将TreeMap进行迭代。此外,它还实现了SortedMap接口,其中包含依赖于此排序顺序的方法。
  •  LinkedHashMap将按照将条目放入地图的顺序进行迭代

 “Hashtable”是基于哈希的地图的通用名称。在Java API的上下文中,
 Hashtable是在收集框架存在之前从Java 1.1开始的一个过时的类。它不应该被使用,因为它的API是混乱的过时的方法重复的功能,它的方法是同步的(这可以降低性能,一般是无用的)。使用ConcurrrentHashMap而不是Hashtable。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Difference between HashMap, LinkedHashMap and TreeMap

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 38 = 41