W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.util.AbstractMap<K,V&
public abstract class AbstractMap<K,V>
extends Object
implements Map<K,V>
此類提供 Map 接口的骨架實現(xiàn),以最大限度地減少實現(xiàn)此接口所需的工作量。
要實現(xiàn)一個不可修改的地圖,程序員只需要擴展這個類并為 entrySet 方法提供一個實現(xiàn),該方法返回地圖映射的集合視圖。通常,返回的集合將依次在 AbstractSet 之上實現(xiàn)。這個集合不應該支持 add 或 remove 方法,它的迭代器也不應該支持 remove 方法。
要實現(xiàn)一個可修改的映射,程序員必須額外覆蓋這個類的 put 方法(否則會拋出 UnsupportedOperationException),并且 entrySet().iterator() 返回的迭代器必須額外實現(xiàn)它的 remove 方法。
根據(jù) Map 接口規(guī)范中的建議,程序員通常應提供 void(無參數(shù))和 map 構(gòu)造函數(shù)。
此類中每個非抽象方法的文檔都詳細描述了它的實現(xiàn)。如果正在實現(xiàn)的映射允許更有效的實現(xiàn),則可以覆蓋這些方法中的每一個。
此類是 Java 集合框架的成員。
修飾符和類型 | 類 | 描述 |
---|---|---|
static class | AbstractMap.SimpleEntryK,V | 維護鍵和值的條目。 |
static class | AbstractMap.SimpleImmutableEntryK,V | 維護不可變鍵和值的條目。 |
從接口 java.util.Map 繼承的嵌套類/接口 |
---|
Map.EntryK,V |
修飾符 | 構(gòu)造函數(shù) | 描述 |
---|---|---|
protected | AbstractMap() | 唯一的構(gòu)造函數(shù)。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | clear() | 從此映射中刪除所有映射(可選操作)。 |
protected Object | clone() | 返回此 AbstractMap 實例的淺表副本:鍵和值本身沒有被克隆。 |
boolean | containsKey(Object key) | 如果此映射包含指定鍵的映射,則返回 true。 |
boolean | containsValue(Object value) | 如果此映射將一個或多個鍵映射到指定值,則返回 true。 |
abstract SetMap.EntryK,V | entrySet() | 返回此映射中包含的映射的 Set 視圖。 |
boolean | equals(Object o) | 比較指定對象與此映射是否相等。 |
V | get(Object key) | 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。 |
int | hashCode() | 返回此map的哈希碼值。 |
boolean | isEmpty() | 如果此映射不包含鍵值映射,則返回 true。 |
SetK | keySet() | 返回此映射中包含的鍵的 Set 視圖。 |
V | put(K key, V value) | 將指定值與此映射中的指定鍵關(guān)聯(lián)(可選操作)。 |
void | putAll(Map<? extends K,? extends V> m) | 將所有映射從指定映射復制到此映射(可選操作)。 |
V | remove(Object key) | 如果存在,則從此映射中刪除鍵的映射(可選操作)。 |
int | size() | 返回此映射中鍵值映射的數(shù)量。 |
String | toString() | 返回此map的字符串表示形式。 |
CollectionV | values() | 返回此映射中包含的值的集合視圖。 |
從接口 java.util.Map 繼承的方法 |
---|
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll |
從類 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
protected AbstractMap()
唯一的構(gòu)造函數(shù)。 (用于子類構(gòu)造函數(shù)的調(diào)用,通常是隱式的。)
public int size()
返回此映射中鍵值映射的數(shù)量。 如果映射包含多個 Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。
指定者:
接口 MapK,V 中的大小
返回:
此映射中的鍵值映射的數(shù)量
public boolean isEmpty()
如果此映射不包含鍵值映射,則返回 true。
指定者:
接口 MapK,V 中的 isEmpty
返回:
如果此映射不包含鍵值映射,則為 true
public boolean containsValue(Object value)
如果此映射將一個或多個鍵映射到指定值,則返回 true。 更正式地說,當且僅當此映射包含至少一個到值 v 的映射時才返回 true,使得 (value==null ? v==null : value.equals(v))。 對于 Map 接口的大多數(shù)實現(xiàn),此操作可能需要映射大小的線性時間。
指定者:
接口 MapK,V 中的 containsValue
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | 要測試其在此映射中的存在的值 |
返回:
如果此映射將一個或多個鍵映射到指定值,則為 true
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果該值的類型不適合此map(可選) |
NullPointerException | 如果指定的值為 null 并且此映射不允許 null 值(可選) |
public boolean containsKey(Object key)
如果此映射包含指定鍵的映射,則返回 true。 更正式地說,當且僅當此映射包含鍵 k 的映射時才返回 true,使得 (key==null ? k==null : key.equals(k))。 (最多可以有一個這樣的映射。)
指定者:
containsKey 在接口 MapK,V
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
key | 要測試此地圖中是否存在的鍵 |
返回:
如果此映射包含指定鍵的映射,則為 true
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果此映射的鍵類型不合適(可選) |
NullPointerException | 如果指定的鍵為空并且此映射不允許空鍵(可選) |
public V get(Object key)
返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。
更正式地說,如果此映射包含從鍵 k 到值 v 的映射,使得 (key==null ? k==null : key.equals(k)),則此方法返回 v; 否則返回null。 (最多可以有一個這樣的映射。)
如果此映射允許 null 值,則返回值為 null 并不一定表示該映射不包含該鍵的映射; 映射也可能將鍵顯式映射為空。 containsKey 操作可用于區(qū)分這兩種情況。
指定者:
進入接口 MapK,V
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
key | 要返回其關(guān)聯(lián)值的鍵 |
返回:
指定鍵映射到的值,如果此映射不包含該鍵的映射,則為 null
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果此映射的鍵類型不合適(可選) |
NullPointerException | 如果指定的鍵為空并且此映射不允許空鍵(可選) |
public V put(K key, V value)
將指定值與此映射中的指定鍵關(guān)聯(lián)(可選操作)。 如果映射先前包含鍵的映射,則舊值將替換為指定值。 (當且僅當 m.containsKey(k) 返回 true 時,映射 m 被稱為包含鍵 k 的映射。)
指定者:
放入接口 MapK,V
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
key | 與指定值關(guān)聯(lián)的鍵 |
value | 與指定鍵關(guān)聯(lián)的值 |
返回:
與 key 關(guān)聯(lián)的前一個值,如果沒有 key 映射,則返回 null。 (如果實現(xiàn)支持空值,則返回空值還可以指示映射先前將空值與鍵關(guān)聯(lián)。)
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此地圖不支持 put 操作 |
ClassCastException | 如果指定鍵或值的類阻止它存儲在此映射中 |
NullPointerException | 如果指定的鍵或值是 null 并且此映射不允許 null 鍵或值 |
IllegalArgumentException | 如果指定鍵或值的某些屬性阻止它存儲在此映射中 |
public V remove(Object key)
如果存在,則從此映射中刪除鍵的映射(可選操作)。 更正式地說,如果此映射包含從鍵 k 到值 v 的映射,使得 (key==null ? k==null : key.equals(k)),則刪除該映射。 (map最多可以包含一個這樣的映射。)
返回此映射先前與鍵關(guān)聯(lián)的值,如果映射不包含鍵的映射,則返回 null。
如果此映射允許空值,則返回值 null 不一定表示映射不包含鍵的映射; map也有可能將鍵顯式映射為空。
一旦調(diào)用返回,映射將不包含指定鍵的映射。
指定者:
在接口 MapK,V 中移除
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
key | 要從映射中刪除其映射的鍵 |
返回:
與 key 關(guān)聯(lián)的前一個值,如果沒有 key 映射,則返回 null。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此map不支持刪除操作 |
ClassCastException | 如果此映射的鍵類型不合適(可選) |
NullPointerException | 如果指定的鍵為空并且此映射不允許空鍵(可選) |
public void putAll(Map<? extends K,? extends V> m)
將所有映射從指定映射復制到此映射(可選操作)。 這個調(diào)用的效果等同于對指定映射中從鍵 k 到值 v 的每個映射調(diào)用一次 put(k, v) 在這個映射上的效果。 如果在操作進行時修改了指定的映射,則此操作的行為是未定義的。
指定者:
putAll在接口MapK,V中
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
m | 要存儲在此地圖中的映射 |
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此映射不支持 putAll 操作 |
ClassCastException | 如果指定映射中的鍵或值的類阻止它存儲在此映射中 |
NullPointerException | 如果指定的映射為空,或者此映射不允許空鍵或值,并且指定的映射包含空鍵或值 |
IllegalArgumentException | 如果指定映射中的鍵或值的某些屬性阻止將其存儲在此映射中 |
public void clear()
從此映射中刪除所有映射(可選操作)。 此調(diào)用返回后,map將為空。
指定者:
在界面 MapK,V 中清除
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此map不支持清除操作 |
public SetK keySet()
返回此映射中包含的鍵的 Set 視圖。 集合由map支持,因此對map的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的 keySet
返回:
此map中包含的鍵的集合視圖
public CollectionV values()
返回此映射中包含的值的集合視圖。 集合由map支持,因此對map的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的值
返回:
此map中包含的值的集合視圖
public abstract SetMap.EntryK,V entrySet()
從接口復制的描述:map
返回此映射中包含的映射的 Set 視圖。 集合由地圖支持,因此對地圖的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(除了通過迭代器自己的刪除操作,或通過迭代器返回的映射條目上的 setValue 操作),則迭代的結(jié)果是未定義的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的 entrySet
返回:
此map中包含的映射的集合視圖
public boolean equals(Object o)
比較指定對象與此映射是否相等。 如果給定對象也是一個映射并且兩個映射表示相同的映射,則返回 true。 更正式地說,如果 m1.entrySet().equals(m2.entrySet()),則兩個映射 m1 和 m2 表示相同的映射。 這確保了 equals 方法在 Map 接口的不同實現(xiàn)中正常工作。
指定者:
接口 MapK,V 中的等于
覆蓋:
類 Object 中的等于
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 要與此map比較是否相等的對象 |
返回:
如果指定的對象等于此map,則為 true
public int hashCode()
返回此map的哈希碼值。 映射的哈希碼定義為映射的 entrySet() 視圖中每個條目的哈希碼的總和。 這確保了 m1.equals(m2) 意味著 m1.hashCode()==m2.hashCode() 對于任何兩個映射 m1 和 m2,如 Object#hashCode 的一般合同所要求的。
指定者:
接口 MapK,V 中的 hashCode
覆蓋:
類 Object 中的 hashCode
返回:
此map的哈希碼值
public String toString()
返回此map的字符串表示形式。 字符串表示由一個鍵值映射列表組成,按映射的 entrySet 視圖的迭代器返回的順序,用大括號 ("{}") 括起來。 相鄰映射由字符“、”(逗號和空格)分隔。 每個鍵值映射都呈現(xiàn)為鍵,后跟等號(“=”),后跟關(guān)聯(lián)的值。 鍵和值通過 String#valueOf(Object) 轉(zhuǎn)換為字符串。
覆蓋:
類 Object 中的 toString
返回:
此map的字符串表示形式
protected Object clone() throws CloneNotSupportedException
返回此 AbstractMap 實例的淺表副本:鍵和值本身沒有被克隆。
覆蓋:
在類 Object 中克隆
返回:
這個map的淺拷貝
Throws:
Throw名稱 | Throw描述 |
---|---|
CloneNotSupportedException | 如果對象的類不支持 Cloneable 接口。 覆蓋 clone 方法的子類也可以拋出此異常,表示無法克隆實例。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: