|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractMap<K,V>
K
- 此映射維護的鍵的型別V
- 映射值的型別public abstract class AbstractMap<K,V>
此類別提供 Map 介面的骨幹實作,以最大限度地減少實作此介面所需的工作。
要實作不可修改的映射,程式人員只需擴展此類別並提供 entrySet 方法的實作即可,該方法將返回映射的映射關係 set 視圖。通常,返回的 set 將依次在 AbstractSet 上實作。此 set 不支持 add 或 remove 方法,其迭代器也不支持 remove 方法。
要實作可修改的映射,程式人員必須另外覆寫此類別的 put 方法(否則將拋出 UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必須另外實作其 remove 方法。
按照 Map 介面規範中的建議,程式人員通常應該提供一個 void(無參數)建構子和 map 建構子。
此類別中每個非抽象方法的文檔詳細描述了其實作。如果要實作的映射允許更有效的實作,則可以覆寫所有這些方法。
此類別是 Java Collections Framework 的成員。
Map
,
Collection
巢狀類別摘要 | |
---|---|
static class |
AbstractMap.SimpleEntry<K,V>
維護鍵和值的 Entry。 |
static class |
AbstractMap.SimpleImmutableEntry<K,V>
維護不可變的鍵和值的 Entry。 |
從介面 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)
返回指定鍵所映射的值;如果此映射不包含該鍵的映射關係,則返回 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()
返回此映射中的鍵-值映射關係數。 |
String |
toString()
返回此映射的字元串表示形式。 |
Collection<V> |
values()
返回此映射中包含的值的 Collection 視圖。 |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
protected AbstractMap()
方法詳細資訊 |
---|
public int size()
此實作返回 entrySet().size()。
Map<K,V>
中的 size
public boolean isEmpty()
此實作返回 size() == 0。
Map<K,V>
中的 isEmpty
public boolean containsValue(Object value)
此實作在 entrySet() 上進行迭代,以搜尋帶有指定值的條目。如果找到這樣的條目,則返回 true。如果迭代終止,並且沒有找到這樣的條目,則返回 false。注意,此實作所需的時間與映射的大小呈線性關係。
Map<K,V>
中的 containsValue
value
- 測試是否存在於此映射中的值
ClassCastException
- 如果該值對於此映射是不合適的型別(可選)
NullPointerException
- 如果指定值為 null 並且此映射不允許 null 值(可選)public boolean containsKey(Object key)
此實作在 entrySet() 上進行迭代,以搜尋帶有指定鍵的條目。如果找到這樣的條目,則返回 true。如果迭代終止,並且沒有找到這樣的條目,則返回 false。注意,此實作所需的時間與映射的大小呈線性關係;許多實作將覆寫此方法。
Map<K,V>
中的 containsKey
key
- 測試是否存在於此映射中的鍵
ClassCastException
- 如果該鍵對於此映射是不合適的型別(可選)
NullPointerException
- 如果指定鍵為 null 並且此映射不允許 null 鍵(可選)public V get(Object key)
null
。
更確切地講,如果此映射包含滿足 (key==null ? k==null :
key.equals(k))
的鍵 k
到值 v
的映射關係,則此方法返回 v
;否則返回 null
。(最多只能有一個這樣的映射關係)。
如果此映射允許 null 值,則返回 null
值並不一定 表示該映射不包含該鍵的映射關係;也可能該映射將該鍵顯示地映射到 null
。使用 containsKey
操作可區分這兩種情況。
此實作在 entrySet() 上進行迭代,以搜尋帶有指定鍵的條目。如果找到這樣的條目,則返回該條目的值。如果迭代終止,並且沒有找到這樣的條目,則返回 null。注意,此實作所需的時間與映射的大小呈線性關係;許多實作將覆寫此方法。
Map<K,V>
中的 get
key
- 要返回其關聯值的鍵
null
ClassCastException
- 如果該鍵對於此映射是不合適的型別(可選)
NullPointerException
- 如果指定鍵為 null 並且此映射不允許 null 鍵(可選)public V put(K key, V value)
m.containsKey(k)
返回 true 時,才能說映射 m 套件含鍵 k 的映射關係)。
此實作始終拋出 UnsupportedOperationException。
Map<K,V>
中的 put
key
- 與指定值關聯的鍵value
- 與指定鍵關聯的值
UnsupportedOperationException
- 如果此映射不支持 put 操作
ClassCastException
- 如果指定鍵或值的類別不允許將其存儲在此映射中
NullPointerException
- 如果指定鍵或值為 null,並且此映射不允許 null 鍵或值
IllegalArgumentException
- 如果指定鍵或值的某些屬性不允許將其存儲在此映射中public V remove(Object key)
(key==null ? k==null :key.equals(k))
的鍵 k 到值 v 的映射關係,則移除該映射關係。(該映射最多只能包含一個這樣的映射關係。)
返回此映射中以前關聯該鍵的值,如果此映射不包含該鍵的映射關係,則返回 null。
如果此映射允許 null 值,則返回 null 值並不一定 表示該映射不包含該鍵的映射關係;也可能該映射將該鍵顯示地映射到 null。
調用返回後,此映射將不再包含指定鍵的映射關係。
此實作在 entrySet() 上進行迭代,以搜尋帶有指定鍵的條目。如果找到這樣的條目,則通過 getValue 操作獲取該條目的值,然後使用迭代器的 remove 操作從 collection(以及底層實作映射)中移除該條目,並返回保存的值。如果迭代終止,並且沒有找到這樣的條目,則返回 null。注意,此實作所需的時間與映射大小呈線性關係;許多實作將覆寫此方法。
注意,如果 entrySet 迭代器不支持 remove 方法,並且此映射包含指定鍵的映射關係,則此實作將拋出 UnsupportedOperationException。
Map<K,V>
中的 remove
key
- 從映射中移除其映射關係的鍵
UnsupportedOperationException
- 如果此映射不支持 remove 操作
ClassCastException
- 如果該鍵對於此映射是不合適的型別(可選)
NullPointerException
- 如果指定鍵為 null 並且此映射不允許 null 鍵(可選)public void putAll(Map<? extends K,? extends V> m)
put(k, v)
。如果正在進行此操作的同時修改了指定的映射,則此操作的行為是不確定的。
此實作在指定映射的 entrySet() collection 上進行迭代,並對迭代返回的每個條目調用一次此映射的 put 操作。
注意,如果此映射不支持 put 操作,並且指定映射為非空(null),則此實作將拋出 UnsupportedOperationException。
Map<K,V>
中的 putAll
m
- 要存儲在此映射中的映射關係
UnsupportedOperationException
- 如果此映射不支持 putAll 操作
ClassCastException
- 如果指定映射中的鍵或值的類別不允許將其存儲在此映射中
NullPointerException
- 如果指定映射為 null,或者此映射不允許 null 鍵或值,並且指定的映射包含 null 鍵或值
IllegalArgumentException
- 如果指定映射中的鍵或值的某些屬性不允許將其存儲在此映射中public void clear()
此實作調用 entrySet().clear()。
注意,如果 entrySet 不支持 clear 操作,則此實作將拋出 UnsupportedOperationException。
Map<K,V>
中的 clear
UnsupportedOperationException
- 如果此映射不支持 clear 操作public Set<K> keySet()
Set
視圖。該 set 受映射支持,所以對映射的更改可在此 set 中反映出來,反之亦然。如果對該 set 進行迭代的同時修改了映射(通過迭代器自己的 remove 操作除外),則迭代結果是不確定的。set 支持元素移除,通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應的映射關係。它不支持 add 或 addAll 操作。
此實作返回一個子類別化 AbstractSet
的 set。子類別的 iterator 方法通過此映射的 entrySet() 迭代器返回一個「外覆器物件」。size 方法委託給此映射的 size 方法,contains 方法委託給此映射的 containsKey 方法。
set 是在第一次調用此方法時創建的,並為回應所有後續調用而返回。 因為不執行同步操作,所以對此方法的多個調用幾乎總是返回相同的 set。
Map<K,V>
中的 keySet
public Collection<V> values()
Collection
視圖。該 collection 受映射支持,所以對映射的更改可在此 collection 中反映出來,反之亦然。如果對該 collection 進行迭代的同時修改了映射(通過迭代器自己的 remove 操作除外),則迭代結果是不確定的。collection 支持元素移除,通過 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應的映射關係。它不支持 add 或 addAll 操作。
此實作返回一個子類別化 AbstractCollection
的 collection。子類別的 iterator 方法通過此映射的 entrySet() 迭代器返回一個「外覆器物件」。size 方法委託給此映射的 size 方法,contains 方法委託給此映射的 containsValue 方法。
collection 是在第一次調用此方法時創建的,並為回應所有後續調用而返回。因為不執行同步操作,所以對此方法的多個調用幾乎總是返回相同的 collection。
Map<K,V>
中的 values
public abstract Set<Map.Entry<K,V>> entrySet()
Map
複製的描述Set
視圖。該 set 受映射支持,所以對映射的更改可在此 set 中反映出來,反之亦然。如果對該 set 進行迭代的同時修改了映射(通過迭代器自己的 remove 操作,或者通過對迭代器返回的映射項執行 setValue 操作除外),則迭代結果是不確定的。set 支持元素移除,通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應的映射關係。它不支持 add 或 addAll 操作。
Map<K,V>
中的 entrySet
public boolean equals(Object o)
此實作首先檢查指定的物件是否為此映射;如果是,則返回 true。然後,它將檢查指定的物件是否是一個大小與此映射相等的映射;如果不是,則返回 false。如果是,則在此映射的 entrySet collection 上進行迭代,並檢查指定的映射是否包含此映射所包含的每個映射關係。如果指定的映射中不包含這樣的映射關係,則返回 false。如果迭代完成,則返回 true。
Map<K,V>
中的 equals
Object
中的 equals
o
- 要與此映射進行相等性比較的物件
Object.hashCode()
,
Hashtable
public int hashCode()
Object.hashCode()
的常規協定所要求的。
此實作在 entrySet() 上進行迭代,對 set 中的每個元素(條目)調用 hashCode()
,併合計結果。
Map<K,V>
中的 hashCode
Object
中的 hashCode
Map.Entry.hashCode()
,
Object.equals(Object)
,
Set.equals(Object)
public String toString()
String.valueOf(Object)
轉換為字元串。
Object
中的 toString
protected Object clone() throws CloneNotSupportedException
Object
中的 clone
CloneNotSupportedException
- 如果物件的類別不支持 Cloneable
介面,則覆寫 clone
方法的子類別也會拋出此異常,以指示無法複製某個實例。Cloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。