轉載地址:http://www.zhixing123.cn/jsp/30113.htmlhtml
Map簡介jsp
將鍵映射到值的對象。一個映射不能包含重複的鍵;每一個鍵最多隻能映射到一個值。此接口取代 Dictionary 類,後者徹底是一個抽象類,而不是一個接口。優化
Map 接口提供三種collection 視圖,容許以鍵集、值集或鍵-值映射關係集的形式查看某個映射的內容。映射順序 定義爲迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現可明確保證其順序,如 TreeMap 類;另外一些映射實現則不保證順序,如HashMap 類。htm
注:將可變對象用做映射鍵時必須格外當心。當對象是映射中某個鍵時,若是以影響 equals 比較的方式更改了對象的值,則映射的行爲將是不肯定的。此項禁止的一種特殊狀況是不容許某個映射將自身做爲一個鍵包含。雖然容許某個映射將自身做爲值包 含,但請格外當心:在這樣的映射上 equals 和 hashCode 方法的定義將再也不是明確的。對象
全部通用的映射實現類應該提供兩個「標準的」構造方法:一個 void (無 參數)構造方法,用於建立空映射;一個是帶有單個 Map 類型參數的構造方法,用於建立一個與其參數具備相同鍵-值映射關係的新映射。實際上,後一個構造方法容許用戶複製任意映射,生成所需類的一個等價映射。盡 管沒法強制執行此建議(由於接口不能包含構造方法),可是 JDK 中全部通用的映射實現都聽從它。接口
此接口中包含的「破壞」方法可修改其操做的映射,若是此映射不支持該操做,這些方法將拋出 UnsupportedOperationException。若是是這樣,那麼在調用對映射無效時,這些方法能夠(但不要求)拋出 UnsupportedOperationException。例如,若是某個不可修改的映射(其映射關係是「重疊」的)爲空,則對該映射調用 putAll(Map) 方法時,能夠(但不要求)拋出異常。rem
某些映射實現對可能包含的鍵和值有所限制。例如,某些實現禁止 null 鍵和值,另外一些則對其鍵的類型有限制。嘗試插入不合格的鍵或值將拋出一個未經檢查的異常,一般是 NullPointerException 或 ClassCastException。試圖查詢是否存在不合格的鍵或值可能拋出異常,或者返回 false;某些實現將表現出前一種行爲,而另外一些則表現後一種。通常來講,試圖對不合格的鍵或值執行操做且該操做的完成不會致使不合格的元素被插入映射 中時,將可能拋出一個異常,也可能操做成功,這取決於實現自己。這樣的異常在此接口的規範中標記爲「可選」。get
此接口是 Java Collections Framework 的成員。hash
Collections Framework 接口中的不少方法是根據 equals 方法定義的。例如,containsKey(Object key) 方法的規範中寫道:「當且僅當此映射包含針對知足 (key==null ? k==null : key.equals(k)) 的鍵 k 的映射關係時,返回 true」。不 應將此規範解釋爲:調用具備非空參數 key 的 Map.containsKey 將致使對任意的鍵 k 調用 key.equals(k)。實現可隨意進行優化,以免調用 equals,例如,可首先比較兩個鍵的哈希碼(Object.hashCode() 規範保證哈希碼不相等的兩個對象不會相等)。通常來講,只要實現者認爲合適,各類 Collections Framework 接口的實現可隨意利用底層 Object 方法的指定行爲。io
經常使用操做說明
void clear()
今後映射中移除全部映射關係(可選操做)。
boolean containsKey(Object key)
若是此映射包含指定鍵的映射關係,則返回 true。
boolean containsValue(Object value)
若是此映射將一個或多個鍵映射到指定值,則返回 true。
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射關係的 Set 視圖。
boolean equals(Object o)
比較指定的對象與此映射是否相等。
V get(Object key)
返回指定鍵所映射的值;若是此映射不包含該鍵的映射關係,則返回 null。
int hashCode()
返回此映射的哈希碼值。
boolean isEmpty()
若是此映射未包含鍵-值映射關係,則返回 true。
Set<K> keySet()
返回此映射中包含的鍵的 Set 視圖。
V put(K key, V value)
將指定的值與此映射中的指定鍵關聯(可選操做)。
void putAll(Map<? extends K,? extends V> m)
從指定映射中將全部映射關係複製到此映射中(可選操做)。
V remove(Object key)
若是存在一個鍵的映射關係,則將其今後映射中移除(可選操做)。
int size()
返回此映射中的鍵-值映射關係數。
Collection<V> values()
返回此映射中包含的值的 Collection 視圖。
Map的通常用法
1.聲明一個Map :
Map map = new HashMap();
2 .向map中放值 ,注意: map是key-value的形式存放的,如:
map.put("sa","dd");
3 .從map中取值 :
String str = map.get("sa").toString,
結果是: str = "dd'
4 .遍歷一個map,從中取得key和value :
Map m= new HashMap();
for(Object obj : map.keySet()){
Object value = map.get(obj );
}