java集合架構-Map介面__java

來源:互聯網
上載者:User
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中插入一個不符合要求的資料,可能拋出null 指標異常或者類型轉換異常。如果在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 Operations    V 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 hashing    boolean 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關聯,同步修改後果未定,支援刪除不支援添加








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.