小编典典

HashMap、LinkedHashMap、TreeMap的区别

all

和在 Java
HashMap有什么区别?我没有看到输出有任何区别,因为这三个都有和。什么是s?LinkedHashMap``TreeMap``keySet``values``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());

阅读 126

收藏
2022-02-28

共1个答案

小编典典

所有三个类都实现了Map接口并提供了几乎相同的功能。最重要的区别是条目迭代发生的顺序:

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

“哈希表”是基于哈希的映射的通用名称。在 Java API 的上下文中,
Hashtable是在集合框架存在之前的 Java 1.1 时代已经过时的类。不应再使用它,因为它的 API
中充斥着重复功能的过时方法,并且它的方法是同步的(这会降低性能并且通常是无用的)。使用ConcurrentHashMap而不是
Hashtable。

2022-02-28