標籤: 暫無標籤

java.util 類 AbstractMap<K,V> java.lang.Object java.util.AbstractMap<K,V>此類提供了 Map 介面的骨幹實現,從而最大限度地減少了實現此介面所需的工作。

 

1 AbstractMap -簡介

java.util
類 AbstractMap<K,V>
java.lang.Object
  java.util.AbstractMap<K,V>
所有已實現的介面:
Map<K,V>
直接已知子類:
ConcurrentHashMap, EnumMap, HashMap, IdentityHashMap, TreeMap, WeakHashMap

--------------------------------------------------------------------------------

public abstract class AbstractMap<K,V>extends Objectimplements Map<K,V>此類提供了 Map 介面的骨幹實現,從而最大限度地減少了實現此介面所需的工作。

要實現不可修改的映射,程序員只需擴展此類並提供 entrySet方法的實現即可,該方法將返回映射的映射關係 Set 視圖。通常,返回的 Set將依次在 AbstractSet上實現。此 Set不支持 add或 remove方法,其迭代器也不支持 remove方法。

要實現可修改的映射,程序員還必須另外重寫此類的 put 方法(否則將拋出 UnsupportedOperationException),並且由 entrySet().iterator() 所返回的迭代器必須另外實現其 remove方法。

按照 Map介面規範中的推薦,程序員通常應該提供一個 void(無參數)構造方法和 map構造方法。

此類中每個非抽象方法的文檔詳細描述了其實現。如果要實現的映射允許更有效的實現,則可以重寫這些方法中的每個方法。

此類是 Java Collections Framework的成員。

2 AbstractMap -版本信息



從以下版本開始:
1.2
另請參見:
Map, Collection

--------------------------------------------------------------------------------

嵌套類摘要
  從介面 java.util.Map 繼承的嵌套類/介面
Map.Entry<K,V>
構造方法摘要
protected  AbstractMap()
          單獨的構造方法。
  方法摘要
void clear()
          從此映射中移除所有映射關係(可選操作)。
protected  Object clone()
          返回此 AbstractMap 實例的淺表複製:不克隆鍵和值本身。
boolean containsKey(Object key)
          如果此映射包含指定鍵的映射關係,則返回 true。
boolean containsValue(Object value)
          如果此映射將一個或多個鍵映射到該值,則返回 true。
abstract  Set<Map.Entry<K,V>> entrySet()
          返回包含在此映射中的映射關係的 Set 視圖。
boolean equals(Object o)
          比較指定對象與此映射的相等性。
V get(Object key)
          返回此映射將指定鍵映射到的值。
int hashCode()
          返回此映射的哈希代碼值。
boolean isEmpty()
          如果此映射不包含任何鍵-值映射關係,則返回 true。
Set<K> keySet()
          返回包含在此映射中的鍵的 Set 視圖。
V put(K key, V value)
          將指定的值與此映射中的指定鍵關聯起來(可選操作)。
void putAll(Map<? extends K,? extends V> t)
          將指定映射的所有映射關係複製到此映射中(可選操作)。
V remove(Object key)
          如果此映射中存在此鍵的映射關係,則移除該映射關係(可選操作)。
int size()
          返回此映射中鍵-值映射關係的數量。
String toString()
          返回此映射的字元串表示形式。
Collection<V> values()
          返回包含在此映射中的值的 collection 視圖。
  從類 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait 
  

3 AbstractMap -構造方法詳細信息



AbstractMap
protected AbstractMap()單獨的構造方法。(由子類構造方法調用,通常是隱式的。)

方法詳細信息

size
public int size()返回此映射中鍵-值映射關係的數量。如果該映射包含多於 Integer.MAX_VALUE 的元素,則返回 Integer.MAX_VALUE。
此實現返回 entrySet().size()。


指定者:
介面 Map<K,V> 中的 size
返回:
此映射中鍵-值映射關係的數量。

--------------------------------------------------------------------------------

isEmpty
public boolean isEmpty()如果此映射不包含任何鍵-值映射關係,則返回 true。
此實現返回 size() == 0。


指定者:
介面 Map<K,V> 中的 isEmpty
返回:
如果此映射不包含任何鍵-值映射關係,則返回 true。

--------------------------------------------------------------------------------

containsValue
public boolean containsValue(Object value)如果此映射將一個或多個鍵映射到該值,則返回 true。更正式地說,當且僅當此映射包含至少一個到值 v 的映射關係,並且 (value==null ? v==null : value.equals(v)) 時才返回 true。對於大多數映射實現而言,此操作所需的時間可能與映射的大小呈線性關係。
此實現在 entrySet() 上進行迭代,以搜索帶有指定值的項。如果找到這樣的項,則返回 true。如果迭代終止,並且沒有找到這樣的項,則返回 false。注意,此實現所需的時間與映射的大小呈線性關係。


指定者:
介面 Map<K,V> 中的 containsValue
參數:
value - 將測試此映射中是否存在的值。
返回:
如果此映射將一個或多個鍵映射到該值,則返回 true。

--------------------------------------------------------------------------------

containsKey
public boolean containsKey(Object key)如果此映射包含指定鍵的映射關係,則返回 true。
此實現在 entrySet() 上進行迭代,以搜索帶有指定鍵的項。如果找到這樣的項,則返回 true。如果迭代終止,並且沒有找到這樣的項,則返回 false。注意,此實現所需的時間與映射的大小呈線性關係;許多實現將重寫此方法。


指定者:
介面 Map<K,V> 中的 containsKey
參數:
key - 將測試此映射中是否存在的鍵。
返回:
如果此映射包含指定鍵的映射關係,則返回 true。
拋出:
NullPointerException - 如果該鍵為 null 並且此映射不允許包含 null 鍵。

--------------------------------------------------------------------------------

get
public V get(Object key)返回此映射將指定鍵映射到的值。如果該映射不包含此鍵的映射關係,則返回 null。返回值 null 不一定 表明該映射不包含該鍵的映射關係;也可能是該映射顯式地將該鍵映射到 null。可以使用 containsKey 操作來區分這兩種情況。
此實現在 entrySet() 上進行迭代,以搜索帶有指定鍵的項。如果找到這樣的項,則返回該項的值。如果迭代終止,並且沒有找到這樣的項,則返回 null。注意,此實現所需的時間與映射的大小呈線性關係;許多實現將重寫此方法。


指定者:
介面 Map<K,V> 中的 get
參數:
key - 與返回值關聯的鍵。
返回:
此映射將指定鍵映射到的值。
拋出:
NullPointerException - 如果鍵為 null 並且此映射不允許包含 null 鍵。
另請參見:
containsKey(Object)

--------------------------------------------------------------------------------

put
public V put(K key,
             V value)將指定的值與此映射中的指定鍵關聯起來(可選操作)。如果映射以前包含此鍵的映射關係,則替換舊的值。
此實現始終拋出 UnsupportedOperationException。


指定者:
介面 Map<K,V> 中的 put
參數:
key - 將與指定值關聯的鍵。
value - 將與指定鍵關聯的值。
返回:
指定鍵以前的關聯值。如果沒有該鍵的映射關係,則返回 null。(如果該實現支持 null 值,則返回 null 也可以表明該映射以前將 null 與指定鍵相關聯。)
拋出:
UnsupportedOperationException - 如果此映射不支持 put 操作。
ClassCastException - 如果指定鍵或值的類不允許它存儲在此映射中。
IllegalArgumentException - 如果此鍵或值 * 的某方面不允許它存儲在此映射中。
NullPointerException - 如果此映射不允許 null 鍵或值,並且指定鍵或值為 null。

--------------------------------------------------------------------------------

remove
public V remove(Object key)如果此映射中存在此鍵的映射關係,則移除該映射關係(可選操作)。
此實現在 entrySet() 上進行迭代,以搜索帶有指定鍵的項。如果找到這樣的項,則通過 getValue 操作獲得該項的值,然後使用迭代器的 remove 操作從 Collection(以及底層映射)中移除該項,並返回保存的值。如果迭代終止,並且沒有找到這樣的項,則返回 null。注意,此實現所需要時間與映射大小呈線性關係;許多實現將重寫此方法。

注意,如果 entrySet 迭代器不支持 remove 方法並且此映射包含指定鍵的映射關係,則此實現會拋出 UnsupportedOperationException。


指定者:
介面 Map<K,V> 中的 remove
參數:
key - 將從映射中移除其映射關係的鍵。
返回:
指定鍵以前的關聯值。如果沒有該鍵的項,則返回 null。(如果該實現支持 null 值,則返回 null 也可以表明該映射以前將 null 與指定鍵相關聯。)
拋出:
UnsupportedOperationException - 如果此映射不支持 remove 操作。

--------------------------------------------------------------------------------

putAll
public void putAll(Map<? extends K,? extends V> t)將指定映射的所有映射關係複製到此映射中(可選操作)。這些映射關係將替代此映射中已有的,並且指定映射中目前也存在的所有鍵的映射關係。
此實現在指定映射的 entrySet() 集合上進行迭代,並對迭代返回的每一項調用一次此映射的 put 操作。

注意,如果此映射不支持 put 操作,並且指定映射為非空,則此實現會拋出 UnsupportedOperationException。


指定者:
介面 Map<K,V> 中的 putAll
參數:
t - 要存儲在此映射中的映射關係。
拋出:
UnsupportedOperationException - 如果此映射不支持 putAll 操作。
ClassCastException - 如果指定映射中的鍵或值的類不允許它存儲在此映射中。
IllegalArgumentException - 如果指定映射中的鍵或值的某方面不允許它存儲在此映射中。
NullPointerException - 如果指定的映射為 null,或者如果此映射不允許 null 鍵或值,但指定的映射包含了 null 鍵或值。

--------------------------------------------------------------------------------

clear
public void clear()從此映射中移除所有映射關係(可選操作)。
此實現調用 entrySet().clear()。 注意,如果 entrySet 不支持 clear 操作,則此實現會拋出 UnsupportedOperationException。


指定者:
介面 Map<K,V> 中的 clear
拋出:
UnsupportedOperationException - 此映射不支持 clear 操作。

--------------------------------------------------------------------------------

keySet
public Set<K> keySet()返回包含在此映射中的鍵的 Set 視圖。該 Set 受映射的支持,所以對映射的更改反映在 Set 中,反之亦然。(如果在對 Set 進行迭代的同時修改映射,則迭代的結果是不明確的。)Set 支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的項。 它不支持 add 或 addAll 操作。
此實現返回一個為 AbstractSet 創建子類的 Set。子類的 iterator 方法通過此映射的 entrySet() 迭代器返回一個「包裝器對象」。size 方法委託給此映射的 size 方法,而 contains 方法委託給此映射的 containsKey 方法。

Set 是在第一次調用此方法時創建的,並為響應所有後續調用而返回。 因為不執行同步操作,所以對此方法的多個調用很少返回不同的 Set。


指定者:
介面 Map<K,V> 中的 keySet
返回:
包含在此映射中的鍵的 Set 視圖。

--------------------------------------------------------------------------------

values
public Collection<V> values()返回包含在此映射中的值的 collection 視圖。該 collection 受映射的支持,所以對映射的更改反映在 collection 中,反之亦然。(如果在對 collection 進行迭代的同時修改映射,則迭代的結果是不明確的。)collection 支持元素移除,即通過 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的項。它不支持 add 或 addAll 操作。
此實現返回一個為抽象 collection 創建子類的 collection。子類的 iterator 方法通過此映射的 entrySet() 迭代器返回一個「包裝器對象」。size 方法委託給此映射的 size 方法,而 contains 方法委託給此映射的 containsValue 方法。

collection 是在第一次調用此方法時創建的,並為響應所有後續調用而返回。因為不執行同步操作,所以對此方法的多個調用很少返回不同的 Collection。


指定者:
介面 Map<K,V> 中的 values
返回:
包含在此映射中的值的 collection 視圖。

--------------------------------------------------------------------------------

entrySet
public abstract Set<Map.Entry<K,V>> entrySet()返回包含在此映射中的映射關係的 Set 視圖。此 Set 的每一個元素都是一個 Map.Entry。該 Set 受映射的支持,所以對映射的更改反映在 Set 中,反之亦然。(如果在對 Set 進行迭代的同時修改映射,則迭代的結果是不明確的。)Set 支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的項。它不支持 add 或 addAll 操作。

指定者:
介面 Map<K,V> 中的 entrySet
返回:
包含在此映射中的映射關係的 Set 視圖。

--------------------------------------------------------------------------------

equals
public boolean equals(Object o)比較指定對象與此映射的相等性。如果給定對象也是一個映射並且兩個映射表示相同的映射關係,則返回 true。更正式地說,如果 t1.keySet().equals(t2.keySet()) 並且對於每一個 t1.keySet() 中的鍵 k 都存在 (t1.get(k)==null ? t2.get(k)==null :t1.get(k).equals(t2.get(k))),則兩個映射 t1 和 t2 表示相同的映射關係 。這可以確保 equals 方法在 map 介面的不同實現中正常工作。
此實現首先檢查指定的對象是否為此映射;如果是,則返回 true。然後,它將檢查指定的對象是否是一個大小與此 set 的大小相等的映射;如果不是,則返回 false。如果是,則在此映射的 entrySet 集合上進行迭代,並檢查指定的映射是否包含此映射所包含的每個映射關係。如果指定的映射中不包含這樣的映射關係,則返回 false。如果迭代完成,則返回 true。


指定者:
介面 Map<K,V> 中的 equals
覆蓋:
類 Object 中的 equals
參數:
o - 要與此映射進行相等性比較的對象。
返回:
如果指定的對象等於此映射,則返回 true。
另請參見:
Object.hashCode(), Hashtable

--------------------------------------------------------------------------------

hashCode
public int hashCode()返回此映射的哈希代碼值。映射的哈希代碼被定義為該映射的 entrySet() 視圖中每一項的哈希代碼的總和。這確保了 t1.equals(t2) 對於任意兩個映射 t1 和 t2 都意味著 t1.hashCode()==t2.hashCode(),正如 Object.hashCode 的常規協定所要求的。
此實現在 entrySet() 上進行迭代,對 Collection 中的每個元素(項)調用 hashCode,併合計結果。


指定者:
介面 Map<K,V> 中的 hashCode
覆蓋:
類 Object 中的 hashCode
返回:
此映射的哈希代碼值。
另請參見:
Map.Entry.hashCode(), Object.hashCode(), Object.equals(Object), Set.equals(Object)

--------------------------------------------------------------------------------

toString
public String toString()返回此映射的字元串表示形式。該字元串表示形式由鍵-值映射關係的一個列表組成,此列表是按照映該射 entrySet 視圖的迭代器返回的順序排列的,並用括弧 ("{}") 括起來。相鄰的映射關係是用字元 ", "(逗號加空格)分隔的。每個鍵-值映射關係按以下方式呈現:鍵,後面是一個等號 ("="),再後面是相關聯的值。鍵和值都通過 String.valueOf(Object) 轉換為字元串。
此實現會創建一個空的字元串緩衝區,追加一個左括弧,然後在映射的 entrySet 視圖上進行迭代,依次追加每個 map.entry 的字元串表示形式。每追加一項后(最後一項除外),將追加字元串 ", "。最後,追加一個右括弧。從字元串緩衝區中獲得一個字元串並返回它。


覆蓋:
類 Object 中的 toString
返回:
此映射的字元串表示形式。

--------------------------------------------------------------------------------

clone
protected Object clone()
                throws CloneNotSupportedException返回此 AbstractMap 實例的淺表複製:不克隆鍵和值本身。

覆蓋:
類 Object 中的 clone
返回:
此映射的淺表複製。
拋出:
CloneNotSupportedException - 如果對象的類不支持 Cloneable 介面,則重寫 clone 方法的子類也會拋出此異常,以指示無法克隆某個實例。
另請參見:
Cloneable
上一篇[尼米茲號航空母艦]    下一篇 [糌粑]

相關評論

同義詞:暫無同義詞