Map 集合是用來存儲 「鍵(K)-值(V)」映射對的集合。它是一個接口。它的實現類中,存儲「鍵(K)-值(V)」映射對是經過鍵來惟一標識,Map 底層的「鍵(K)」是用Set來存放的。因此自定義的類,存放在Map的實現類中,須要重寫hashCode 和 equals 方法。java
經常使用的實現類:HashMap,TreeMap,HashTable。安全
HashMap,HashTable,TreeMap的區別:ide
HashMap:1、線程不安全的,不一樣步的;測試
2、能最多存儲一個null鍵,任意多個null值spa
3、有containsKey(),containsValue()方法,沒有contains() 方法線程
3、繼承AbstractMap<K,V>指針
Hashtable:1、線程安全的,同步的。對象
2、不能有null鍵,也不能有null值,不然運行時出空指針異常;繼承
3、基於陳舊的Dictionary<K,V>類 ,有contains() 方法,用於測試此映射表中是否存在指定值,等同於HashMap類中的containsValue()(本類中也有)接口
TreeMap:線程不安全的,不一樣步的。存入的元素的Key,必須是「可比較的」,由於它的key底層使用TreeSet來實現的,即存入的元素必須實現java.lang.Comparable<T>接口,或者是在建立TreeMap對象是指定一個實現java.util.Comparator<T>接口比較器。參考文檔JDK API 1.6。
Map接口中定義的方法(只列舉經常使用的):
booleancontainsKey(Object key):判斷集合Key中是否包含傳入的key.
booleancontainsValue(Object value): 判斷集合value中是否包含傳入的value值。
V get(Object key):根據key獲得指定的值。
boolean isEmpty():判斷集合是否爲空。
V put(K key, Vvalue):將鍵-值對存入集合中,返回的是value類型的舊值。若是原先沒有值,會返回null。
V remove(Objectkey):刪除指定的鍵-值對
int size():返回集合的大小。
void clear():清空集合中的所用內容。
Set<K> keySet();//返回Key的集合,用於遍歷Map集合。