1. 程式人生 > >java集合框架-Map介面

java集合框架-Map介面

map是一個鍵值對對映物件,一個map不能包含重複的key,每一個key都能唯一的對映到至多一個value.
這個介面替代了Dictonary類。map介面提供了三種集合檢視,它允許將map的內容視為一個鍵集合、值集合或者鍵值對映集合。map的順序被定義為集合檢視的迭代器返回其元素的順序,有些map 介面的實現,比如TreeMap保證元素的有序性,其他的沒有這個保證。當可變物件被作為map的key的時候,需要注意,map中並沒有明確規定作為關鍵字的key物件傳送改變並影響equals方法返回值時該如何處理。所以儘量避免修改作為key的物件。所有通用的Map實現類都應該提供兩個構造器:無參構造和只有一個Map引數的構造器,可以用來複制一個map.

有些Map介面的實現類對包含的key和value有限制,比如說,不允許key和value為null,或者有的對key的型別有限制。如果試圖在map中插入一個不符合要求的資料,可能丟擲空指標異常或者型別轉換異常。如果在map中試圖查詢一個不存在的key或者value也可能丟擲一個異常,或者只是返回一個false.

public interface Map<K,V> {
    // Query Operations
int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
// Modification OperationsV put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void 
clear();Set<K> keySet(); Collection<V> values(); Set<Map.Entry<K, V>> entrySet(); interface Entry<K,V> { K getKey(); V getValue(); V setValue(V value); boolean equals(Object o); int hashCode(); } // Comparison and hashingboolean equals(Object o);int hashCode();
}

int Size();

返回map中的鍵值對數量,如果超過Integer.Max_Value,那麼就返回最大整型。

boolean isEmpty();

如果map中沒有鍵值對,那麼返回true

boolean containsKey(Object k);

如果map中包含指定key的鍵值對,那麼返回true,也就是說,如果返回true了,當且僅當map包含一個key是 k的鍵值對,最多隻能有一個匹配。

boolean containsValue(Object v);

和containsKey類似,檢查map中是否包含一個值是v的鍵值對對映,最多隻能有一個。

V get(Object key);

返回已key為map中key的value值,如果不存在這個key的對映關係,那麼返回null。更通用的說法,就是如果map中存在引數key的鍵值對對映關係(key==null?k==null:key.equals(k))那麼就返回key的value值,否則返回null,這句話也就說明了,如果你的map中有一個key是null的對映,它也可以為你返回這個null對應的value值。

V put(K key, V value);

在map中建立一個key和一個value的對映關係。如果map以前已經存在了這個key的對映關係,那麼新的put會把原來的覆蓋掉。具體的實現看實現類中的操作。

V remove(Object key); putAll(Map<? extends V>m); putAll(Map<? extends k,? extends V>m); clear(); 不做過多贅述了。

Set<K> keySet();

將map中的所有key已Set的形式返回。Set是基於Map的結構構件的。該集合set與map相關聯,map中的任何操作都會反映在set中,反之也是如此,如果在使用set的過程中修改了map中的值,後果未定。

Collection<V> values();

keyset返回的是map中key的集合,values返回的是map中value的集合。返回的Collection與當前map相關聯,map中的操作都會反映在Collection中,反之也是如此;如果在Collection使用過程中修改了map中的值,後果未定;

Set<Map.Entry<K,V>>entrySet();

返回當前map中所有對映集合Set<Map.Entry<K,V>>,同樣,與Map關聯,同步修改後果未定,支援刪除不支援新增