Java集合:Map集合
一、簡述
public interface Map<K,V>將鍵映射到值的對象。一個映射不能包含重復(fù)的鍵;每個鍵最多只能映射到一個值。
注意:Map中的集合不能包含重復(fù)的鍵,值可以重復(fù)。每個鍵只能對應(yīng)一個值。
Map集合是鍵值對形式存儲值的,所以遍歷Map集合無非就是獲取鍵和值,根據(jù)實際需求,進(jìn)行獲取鍵和值。
Map接口提供三種collection試圖,允許以鍵集、值集或鍵-值集映射關(guān)系集的形式查看某個映射的內(nèi)容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現(xiàn)可明確保證其順序,如 TreeMap 類;另一些映射實現(xiàn)則不保證順序,如 HashMap 類。
注:
將可變對象用作映射鍵時必須格外小心。當(dāng)對象是映射中某個鍵時,如果以影響 equals 比較的方式更改了對象的值,則映射的行為將是不確定的。此項禁止的一種特殊情況是不允許某個映射將自身作為一個鍵包含。雖然允許某個映射將自身作為值包含,但請格外小心:在這樣的映射上 equals 和 hashCode 方法的定義將不再是明確的。
所有通用的映射實現(xiàn)類應(yīng)該提供兩個“標(biāo)準(zhǔn)的”構(gòu)造方法:
一個 void(無參數(shù))構(gòu)造方法,用于創(chuàng)建空映射;
一個是帶有單個 Map 類型參數(shù)的構(gòu)造方法,用于創(chuàng)建一個與其參數(shù)具有相同鍵-值映射關(guān)系的新映射。
實際上,后一個構(gòu)造方法允許用戶復(fù)制任意映射,生成所需類的一個等價映射。盡管無法強(qiáng)制執(zhí)行此建議(因為接口不能包含構(gòu)造方法),但是 JDK 中所有通用的映射實現(xiàn)都遵從它。
二、Map接口
public interface Map<K, V>{int size(); //返回此映射中的鍵-值映射關(guān)系數(shù)。boolean isEmpty(); //如果此映射未包含鍵-值映射關(guān)系,則返回 true。boolean containsKey(Object key); //如果此映射包含指定鍵的映射關(guān)系,則返回 true。boolean containsValue(Object value) //如果此映射將一個或多個鍵映射到指定值,則返回 true。V get(Object key); //根據(jù)key查找對應(yīng)value數(shù)據(jù),如果沒有,則返回 null。V put(K key, V value); //向集合保存數(shù)據(jù)可選操作)。V remove(Object key); //如果存在一個鍵的映射關(guān)系,則將其從此映射中移除(可選操作)。void putAll(Map<? extends K, ? extends V> m); //從指定映射中將所有映射關(guān)系復(fù)制到此映射中(可選操作)。void clear(); //從此映射中移除所有映射關(guān)系(可選操作)。Set<K> KeySet(); //返取出全部key。Collection<V> values(); //返回此映射中包含的值的 Collection 視圖。Set<Map, Entry<K, V>> entrySet(); //即將Map集合轉(zhuǎn)化為Set集合。interface Entry<K, V> {K getKey();V getValue();V setValue(V value);boolean equals(Object o);int hashCode(); }boolean equals(Object o); //比較指定的對象與此映射是否相等。int hashCode(); //返回此映射的哈希碼值。 }三、具體實現(xiàn)
接口java.util.Map,包括3個實現(xiàn)類:HashMap、Hashtable、TreeMap。當(dāng)然還有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。
Map是用來存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),鍵值對在數(shù)組中通過數(shù)組下標(biāo)來對其內(nèi)容索引的,而鍵值對在Map中,則是通過對象來進(jìn)行索引,用來索引的對象叫做key,其對應(yīng)的對象叫value。
四、Map的兩種取值方式KeySet、entrySet
(一)KeySet
先獲取所有鍵的集合,再根據(jù)鍵獲取對應(yīng)的值。(即先找到丈夫,再去找妻子)
keySet的演示圖解
(二)entrySet
先獲取map中的鍵值關(guān)系封裝成一個個的entry對象, 存儲到一個Set集合中,再迭代這個Set集合, 根據(jù)entry獲取對應(yīng)的key和value。向集合中存儲自定義對象(entry類似于是結(jié)婚證)
entrySet的演示圖解
HashMap : 內(nèi)部結(jié)構(gòu)是哈希表,不是同步的。允許null作為鍵,null作為值。
   TreeMap : 內(nèi)部結(jié)構(gòu)是二叉樹,不是同步的。可以對Map集合中的鍵進(jìn)行排序。
五、HashMap
總結(jié)
以上是生活随笔為你收集整理的Java集合:Map集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: weblogic忘记console密码
 - 下一篇: Spark初识-Spark基本架构概览使