HashMap、LinkedHashMap和treemap的区别

HashMap、LinkedHashMap和treemap的区别

.之间的区别是什么?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());


有只小跳蛙
浏览 2472回答 3
3回答

蛊毒传说

所有三个类都实现了Map接口,并提供基本相同的功能。最重要的区别是通过条目进行迭代的顺序:HashMap绝对不能保证迭代顺序。当添加新元素时,它甚至可以(而且将)完全改变。TreeMap将根据密钥的“自然顺序”按其compareTo()方法(或外部提供的Comparator)。此外,它还实现了SortedMap接口,它包含依赖于此排序顺序的方法。LinkedHashMap将按照将条目放入地图的顺序进行迭代。“Hashtable”基于哈希映射的泛型名称。在JavaAPI的上下文中,Hashtable是集合框架存在之前Java1.1时代的一个过时的类。不应该再使用它了,因为它的API充斥着重复功能的过时方法,而且它的方法是同步的(这会降低性能,而且通常是无用的)。使用ConcurrentHashMap而不是Hashtable。

慕的地6264312

我更喜欢视觉演示:╔══════════════╦═════════════════════╦═══════════════════╦════════╗ ║   Property   ║       HashMap       ║      TreeMap      ║     LinkedHashMap   ║ ╠══════════════╬═════════════════════╬═══════════════════╬════════╣ ║ Iteration    ║  no guarantee order ║ sorted according  ║                     ║ ║   Order      ║ will remain constant║ to the natural    ║    insertion-order  ║ ║              ║      over time      ║    ordering       ║                     ║ ╠══════════════╬═════════════════════╬═══════════════════╬══════╣ ║  Get/put     ║                     ║                   ║                     ║ ║   remove     ║         O(1)        ║      O(log(n))    ║         O(1)        ║ ║ containsKey  ║                     ║                   ║                     ║ ╠══════════════╬═════════════════════╬═══════════════════╬════════╣ ║              ║                     ║   NavigableMap    ║                     ║ ║  Interfaces  ║         Map         ║       Map         ║         Map         ║ ║              ║                     ║    SortedMap      ║                     ║ ╠══════════════╬═════════════════════╬═══════════════════╬═══════════╣ ║              ║                     ║                   ║                     ║ ║     Null     ║       allowed       ║    only values    ║       allowed       ║ ║ values/keys  ║                     ║                   ║                     ║ ╠══════════════╬═════════════════════╩═══════════════════╩═════════╣ ║              ║   Fail-fast behavior of an iterator cannot be guaranteed      ║ ║   Fail-fast  ║ impossible to make any hard guarantees in the presence of     ║ ║   behavior   ║           unsynchronized concurrent modification              ║ ╠══════════════╬═════════════════════╦═══════════════════╦══════════╣ ║              ║                     ║                   ║                     ║ ║Implementation║      buckets        ║   Red-Black Tree  ║    double-linked    ║ ║              ║                     ║                   ║       buckets       ║ ╠══════════════╬═════════════════════╩═══════════════════╩══════════╣ ║      Is      ║                                                               ║ ║ synchronized ║              implementation is not synchronized               ║ ╚══════════════╩══════════════════════════════════════════════════════╝
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java