HashMap, LinkedHashMap和TreeMap在Java中的区别是什么?
我在输出中没有看到任何不同,因为这三个都有keySet和values。什么是哈希表?
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());
HashMap、TreeMap和LinkedHashMap这三个类都实现了java.util.Map接口,并表示从唯一键到值的映射。
HashMap
HashMap包含基于键的值。
它只包含独特的元素。
它可以有一个空键和多个空值。
它没有维持秩序。
公共类HashMap<K,V>扩展了AbstractMap<K,V>实现了Map<K,V>,可克隆,可序列化
LinkedHashMap
LinkedHashMap包含基于键的值。
它只包含独特的元素。
它可以有一个空键和多个空值。
它与HashMap相同,只是维护插入顺序。//见下面的减速等级
公共类LinkedHashMap<K,V>扩展HashMap<K,V>实现Map<K,V>
TreeMap
TreeMap包含基于键的值。它实现了NavigableMap接口并扩展了AbstractMap类。
它只包含独特的元素。
它不能有空键,但可以有多个空值。
它与HashMap相同,只是维护升序(使用键的自然顺序进行排序)。
公共类TreeMap<K,V>扩展AbstractMap<K,V>实现NavigableMap<K,V>,可克隆,可序列化
哈希表
哈希表是一个列表数组。每个列表都被称为一个桶。桶的位置通过调用hashcode()方法来标识。哈希表包含基于键的值。
它只包含独特的元素。
它可能没有任何空键或值。
它是同步的。
这是一个传承类。
公共类Hashtable<K,V>扩展Dictionary<K,V>实现Map<K,V>,可克隆,可序列化
裁判:http://javarevisited.blogspot.in/2015/08/difference-between-HashMap-vs-TreeMap-vs-LinkedHashMap-Java.html