AbstractMap

簡介,版本信息,構造方法詳細信息,

簡介

所有已實現的接口:
Map<K,V>
直接已知子類:
ConcurrentHashMap, EnumMap, HashMap, IdentityHashMap, TreeMap, WeakHashMap
--------------------------------------------------------------------------------
public abstract class AbstractMap<K,V>extends Objectimplements Map<K,V>要實現不可修改的映射,程式設計師只需擴展此類並提供 entrySet 方法的實現即可,該方法將返回映射的映射關係 Set 視圖。通常,返回的 Set 將依次在 AbstractSet 上實現。此 Set 不支持 add 或 remove 方法,其疊代器也不支持 remove 方法。
要實現可修改的映射,程式設計師還必須另外重寫此類的 put 方法(否則將拋出 UnsupportedOperationException),並且由 entrySet().iterator() 所返回的疊代器必須另外實現其 remove 方法。
按照 Map 接口規範中的推薦,程式設計師通常應該提供一個 void(無參數)構造方法和 map 構造方法。
此類中每個非抽象方法的文檔詳細描述了其實現。如果要實現的映射允許更有效的實現,則可以重寫這些方法中的每個方法。
此類是 Java Collections Framework 的成員。

版本信息

從以下版本開始:
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

構造方法詳細信息

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

相關詞條

熱門詞條

聯絡我們