发布日期:2018-03-26
HashMap,LinkedHashMap和TreeMap之间的区别+ 查看更多
HashMap,LinkedHashMap和TreeMap之间的区别
+ 查看更多
发布日期:2018-03-10 11:48
分类:JAVA
浏览次数:126
Java中的HashMap,LinkedHashMap和TreeMap有什么区别? 我没有看到输出的任何差异,因为所有三个都有keySet和values。 什么是Hashtables?
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完全不保证迭代顺序。当添加新元素时,它可以甚至会完全改变。 TreeMap将根据关键字的“自然排序”根据他们的compareTo()方法(或外部提供的比较器)进行迭代。此外,它实现SortedMap接口,其中包含依赖于此排序顺序的方法。 LinkedHashMap将按照条目放入映射的顺序进行迭代。
“Hashtable”是基于散列的映射的通用名称。在Java API的上下文中,Hashtable是Java 1.1之前的集合框架存在之前的过时类。它不应该再使用了,因为它的API混杂着过时的方法,重复的功能,它的方法是同步的(这可能会降低性能,一般是无用的)。最好使用ConcurrrentHashMap而不是Hashtable。