鴻蒙OS AbstractMap

2022-07-06 17:50 更新

AbstractMap

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ù)摘要

修飾符 構(gòu)造函數(shù) 描述
protected AbstractMap() 唯一的構(gòu)造函數(shù)。

方法總結(jié)

修飾符和類型 方法 描述
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

構(gòu)造函數(shù)詳細信息

AbstractMap

protected AbstractMap()

唯一的構(gòu)造函數(shù)。 (用于子類構(gòu)造函數(shù)的調(diào)用,通常是隱式的。)

方法詳情

size

public int size()

返回此映射中鍵值映射的數(shù)量。 如果映射包含多個 Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。

指定者:

接口 MapK,V 中的大小

返回:

此映射中的鍵值映射的數(shù)量

isEmpty

public boolean isEmpty()

如果此映射不包含鍵值映射,則返回 true。

指定者:

接口 MapK,V 中的 isEmpty

返回:

如果此映射不包含鍵值映射,則為 true

containsValue

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 值(可選)

containsKey

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 如果指定的鍵為空并且此映射不允許空鍵(可選)

get

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 如果指定的鍵為空并且此映射不允許空鍵(可選)

put

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 如果指定鍵或值的某些屬性阻止它存儲在此映射中

remove

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 如果指定的鍵為空并且此映射不允許空鍵(可選)

putAll

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 如果指定映射中的鍵或值的某些屬性阻止將其存儲在此映射中

clear

public void clear()

從此映射中刪除所有映射(可選操作)。 此調(diào)用返回后,map將為空。

指定者:

在界面 MapK,V 中清除

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此map不支持清除操作

keySet

public SetK keySet()

返回此映射中包含的鍵的 Set 視圖。 集合由map支持,因此對map的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 keySet

返回:

此map中包含的鍵的集合視圖

values

public CollectionV values()

返回此映射中包含的值的集合視圖。 集合由map支持,因此對map的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的值

返回:

此map中包含的值的集合視圖

entrySet

public abstract SetMap.EntryK,V entrySet()

從接口復制的描述:map

返回此映射中包含的映射的 Set 視圖。 集合由地圖支持,因此對地圖的更改會反映在集合中,反之亦然。 如果在對集合進行迭代時修改了映射(除了通過迭代器自己的刪除操作,或通過迭代器返回的映射條目上的 setValue 操作),則迭代的結(jié)果是未定義的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 entrySet

返回:

此map中包含的映射的集合視圖

equals

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

hashCode

public int hashCode()

返回此map的哈希碼值。 映射的哈希碼定義為映射的 entrySet() 視圖中每個條目的哈希碼的總和。 這確保了 m1.equals(m2) 意味著 m1.hashCode()==m2.hashCode() 對于任何兩個映射 m1 和 m2,如 Object#hashCode 的一般合同所要求的。

指定者:

接口 MapK,V 中的 hashCode

覆蓋:

類 Object 中的 hashCode

返回:

此map的哈希碼值

toString

public String toString()

返回此map的字符串表示形式。 字符串表示由一個鍵值映射列表組成,按映射的 entrySet 視圖的迭代器返回的順序,用大括號 ("{}") 括起來。 相鄰映射由字符“、”(逗號和空格)分隔。 每個鍵值映射都呈現(xiàn)為鍵,后跟等號(“=”),后跟關(guān)聯(lián)的值。 鍵和值通過 String#valueOf(Object) 轉(zhuǎn)換為字符串。

覆蓋:

類 Object 中的 toString

返回:

此map的字符串表示形式

clone

protected Object clone() throws CloneNotSupportedException

返回此 AbstractMap 實例的淺表副本:鍵和值本身沒有被克隆。

覆蓋:

在類 Object 中克隆

返回:

這個map的淺拷貝

Throws:

Throw名稱 Throw描述
CloneNotSupportedException 如果對象的類不支持 Cloneable 接口。 覆蓋 clone 方法的子類也可以拋出此異常,表示無法克隆實例。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號