java集合—Map
一.概述
Map表示键值对(key-value)的存储,Map不能存储重复的Key,即:每个Key对应一个value,且key和value都可以是对象。实现Map的类有ConcurrentHashMap,ConcurrentSkipListMap,EnumMap,HashMap,Hashtable,IdentityHashMap,LinkedHashMap,Properties,TreeMap和WeakHashMap
一.HashMap
HashMap使用哈希表实现映射接口。它继承了AbstractMap类并实现了Map接口。HashMap仅包含唯一键,即:Key不能重复,不支持排序。非线程安全,但可以通过Map m = Collections.synchronizedMap(hashMap)来实现线程安全。
public static void main(String[] args) {
HashMap<Integer, String> hm = new HashMap<Integer, String>();
hm.put(100, "str1");
hm.put(101, "str2");
hm.put(102, "str3");
for (Map.Entry m : hm.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
System.out.println(hm.get(100));
}
二.Hashtable
Hashtable是一个列表数组。每个列表都称为存储桶。通过调用hashcode()方法来标识存储桶的位置。Hashtable包含基于密钥的值。Hashtable不运行null键或值。Hashtable是一个遗留类,与HashTable比效率较低,建议使用HashMap替代HashTable。
三.LinkedHashMap
LinkedHashMap类是Map接口的Hashtable和Linked列表实现,具有可预测的迭代顺序。它继承了HashMap类并实现了Map接口。
四.TreeMap
TreeMap类是基于红黑树的实现。它提供了一种按排序顺序存储键值对的有效方法。