鴻蒙OS Map

2022-06-27 16:31 更新

Map

public interface Map<K,V>

將鍵映射到值的對象。 map不能包含重復的鍵; 每個鍵最多可以映射到一個值。

這個接口代替了 Dictionary 類,它是一個完全抽象的類,而不是一個接口。

Map 接口提供三個集合視圖,允許將映射的內(nèi)容視為一組鍵、值集合或鍵值映射集。 map的順序定義為map集合視圖上的迭代器返回其元素的順序。 一些map實現(xiàn),如 TreeMap 類,對它們的順序做出特定的保證; 其他的,比如 HashMap 類,不這樣做。

注意:如果將可變對象用作映射鍵,則必須非常小心。 如果對象的值以影響等于比較的方式更改,而對象是映射中的鍵,則不指定映射的行為。 此禁令的一個特殊情況是不允許映射包含自己作為鍵。 雖然允許映射將自身作為值包含在內(nèi),但建議格外小心:equals 和 hashCode 方法不再在此類映射上得到很好的定義。

所有通用映射實現(xiàn)類都應該提供兩個“標準”構造函數(shù):一個 void(無參數(shù))構造函數(shù),它創(chuàng)建一個空映射,以及一個具有單個 Map 類型參數(shù)的構造函數(shù),它創(chuàng)建一個具有相同鍵值的新映射,映射作為它的參數(shù)。 實際上,后一個構造函數(shù)允許用戶復制任何映射,生成所需類的等效映射。 沒有辦法強制執(zhí)行此建議(因為接口不能包含構造函數(shù)),但 JDK 中的所有通用映射實現(xiàn)都符合。

此接口中包含的“破壞性”方法,即修改其操作的映射的方法,如果此映射不支持該操作,則指定拋出 UnsupportedOperationException。 如果是這種情況,如果調(diào)用對map沒有影響,這些方法可能會但不是必須拋出 UnsupportedOperationException。 例如,如果要“疊加”映射的映射為空,則在不可修改的映射上調(diào)用 putAll(java.util.Map) 方法可能但不是必須拋出異常。

一些map實現(xiàn)對它們可能包含的鍵和值有限制。 例如,一些實現(xiàn)禁止空鍵和值,而一些實現(xiàn)對其鍵的類型有限制。 嘗試插入不合格的鍵或值會引發(fā)未經(jīng)檢查的異常,通常是 NullPointerException 或 ClassCastException。 嘗試查詢是否存在不合格的鍵或值可能會引發(fā)異常,或者它可能只是返回 false; 一些實現(xiàn)會表現(xiàn)出前一種行為,而另一些會表現(xiàn)出后者。 更一般地,嘗試對不合格的鍵或值進行操作,其完成不會導致將不合格的元素插入到映射中,這可能會引發(fā)異常,也可能會成功,這取決于實現(xiàn)的選擇。 此類異常在此接口的規(guī)范中被標記為“可選”。

Collections Framework 接口中的許多方法都是根據(jù) Object#equals(Object) 方法定義的。 例如, containsKey(Object key) 方法的規(guī)范說:“當且僅當此映射包含鍵 k 的映射時才返回 true 使得 (key==null ? k==null : key.equals(k) )。” 本規(guī)范不應被解釋為暗示使用非空參數(shù)鍵調(diào)用 Map.containsKey 將導致對任何鍵 k 調(diào)用 key.equals(k)。 實現(xiàn)可以自由地實現(xiàn)優(yōu)化,從而避免調(diào)用 equals,例如,首先比較兩個鍵的哈希碼。 (Object#hashCode() 規(guī)范保證具有不相等哈希碼的兩個對象不能相等。)更一般地說,各種集合框架接口的實現(xiàn)可以自由地利用底層 Object 方法的指定行為,只要實現(xiàn)者認為它合適 .

一些執(zhí)行map遞歸遍歷的map操作可能會失敗,但map直接或間接包含自身的自引用實例除外。 這包括 clone()、equals()、hashCode() 和 toString() 方法。 實現(xiàn)可以選擇處理自引用場景,但是大多數(shù)當前的實現(xiàn)不這樣做。

此接口是 Java 集合框架的成員。

嵌套類摘要

修飾符和類型 接口 描述
static interface Map.Entry<K,V> 映射條目(鍵值對)。

方法總結

修飾符和類型 方法 描述
void clear() 修飾符和類型從此映射中刪除所有映射(可選操作)。
default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 嘗試計算指定鍵及其當前映射值的映射(如果沒有當前映射,則為 null)。
default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) 如果指定的鍵尚未與值關聯(lián)(或映射為 null),則嘗試使用給定的映射函數(shù)計算其值并將其輸入到此映射中,除非為 null。
default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 如果指定鍵的值存在且非空,則嘗試在給定鍵及其當前映射值的情況下計算新映射。
boolean containsKey(Object key) 如果此映射包含指定鍵的映射,則返回 true。
boolean containsValue(Object value) 如果此映射將一個或多個鍵映射到指定值,則返回 true。
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的 Set 視圖。
boolean equals(Object o) 比較指定對象與此映射是否相等。
default void forEach(BiConsumer<? super K,? super V> action) 對該映射中的每個條目執(zhí)行給定的操作,直到處理完所有條目或該操作引發(fā)異常。
V get(Object key) 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。
default V getOrDefault(Object key, V defaultValue) 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 defaultValue。
int hashCode() 返回此地圖的哈希碼值。
boolean isEmpty() 如果此映射不包含鍵值映射,則返回 true。
Set<K> keySet() 返回此映射中包含的鍵的 Set 視圖。
default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) 如果指定的鍵尚未與值關聯(lián)或與 null 關聯(lián),則將其與給定的非 null 值關聯(lián)。
V put(K key, V value) 將指定值與此映射中的指定鍵關聯(lián)(可選操作)。
void putAll(Map<? extends K,? extends V> m) 將所有映射從指定映射復制到此映射(可選操作)。
default V putIfAbsent(K key, V value) 如果指定的鍵尚未與值關聯(lián)(或映射到 null),則將其與給定值關聯(lián)并返回 null,否則返回當前值。
V remove(Object key) 如果存在,則從此映射中刪除鍵的映射(可選操作)。
default boolean remove(Object key, Object value) 僅當當前映射到指定值時,才刪除指定鍵的條目。
default V replace(K key, V value) 僅當當前映射到某個值時才替換指定鍵的條目。
default boolean replace(K key, V oldValue, V newValue) 僅當當前映射到指定值時才替換指定鍵的條目。
default void replaceAll(BiFunction<? super K,? super V,? extends V> function) 將每個條目的值替換為對該條目調(diào)用給定函數(shù)的結果,直到所有條目都已處理或該函數(shù)引發(fā)異常。
int size() 返回此映射中鍵值映射的數(shù)量。
CollectionV values() 返回此映射中包含的值的集合視圖。

方法詳情

size

int size()

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

返回:

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

isEmpty

boolean isEmpty()

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

返回:

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

containsKey

boolean containsKey(Object key)

如果此映射包含指定鍵的映射,則返回 true。 更正式地說,當且僅當此映射包含鍵 k 的映射時才返回 true,使得 (key==null ? k==null : key.equals(k))。 (最多可以有一個這樣的映射。)

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要測試此map中是否存在的鍵

返回:

如果此映射包含指定鍵的映射,則為 true

Throws:

Throw名稱 Throw描述
ClassCastException 如果此映射的鍵類型不合適(可選)
NullPointerException 如果指定的鍵為空并且此映射不允許空鍵(可選)

containsValue

boolean containsValue(Object value)

如果此映射將一個或多個鍵映射到指定值,則返回 true。 更正式地說,當且僅當此映射包含至少一個到值 v 的映射時才返回 true,使得 (value==null ? v==null : value.equals(v))。 對于 Map 接口的大多數(shù)實現(xiàn),此操作可能需要映射大小的線性時間。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 要測試其在此映射中的存在的值

返回:

如果此映射將一個或多個鍵映射到指定值,則為 true

Throws:

Throw名稱 Throw描述
ClassCastException 如果該值的類型不適合此map(可選)
NullPointerException 如果指定的值為 null 并且此映射不允許 null 值(可選)

get

V get(Object key)

返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。

更正式地說,如果此映射包含從鍵 k 到值 v 的映射,使得 (key==null ? k==null : key.equals(k)),則此方法返回 v; 否則返回null。 (最多可以有一個這樣的映射。)

如果此映射允許 null 值,則返回值為 null 并不一定表示該映射不包含該鍵的映射; 映射也可能將鍵顯式映射為空。 containsKey 操作可用于區(qū)分這兩種情況。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要返回其關聯(lián)值的鍵

返回:

指定鍵映射到的值,如果此映射不包含該鍵的映射,則為 null

Throws:

Throw名稱 Throw描述
ClassCastException 如果此映射的鍵類型不合適(可選)
NullPointerException 如果指定的鍵為空并且此映射不允許空鍵(可選)

put

V put(K key, V value)

將指定值與此映射中的指定鍵關聯(lián)(可選操作)。 如果映射先前包含鍵的映射,則舊值將替換為指定值。 (當且僅當 m.containsKey(k) 返回 true 時,映射 m 被稱為包含鍵 k 的映射。)

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
value 與指定鍵關聯(lián)的值

返回:

與 key 關聯(lián)的前一個值,如果沒有 key 映射,則返回 null。 (如果實現(xiàn)支持空值,則返回空值還可以指示映射先前將空值與鍵關聯(lián)。)

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此map不支持 put 操作
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中
NullPointerException 如果指定的鍵或值是 null 并且此映射不允許 null 鍵或值
IllegalArgumentException 如果指定鍵或值的某些屬性阻止它存儲在此映射中

remove

V remove(Object key)

如果存在,則從此映射中刪除鍵的映射(可選操作)。 更正式地說,如果此映射包含從鍵 k 到值 v 的映射,使得 (key==null ? k==null : key.equals(k)),則刪除該映射。 (map最多可以包含一個這樣的映射。)

返回此映射先前與鍵關聯(lián)的值,如果映射不包含鍵的映射,則返回 null。

如果此映射允許空值,則返回值 null 不一定表示映射不包含鍵的映射; map也有可能將鍵顯式映射為空。

一旦調(diào)用返回,映射將不包含指定鍵的映射。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要從映射中刪除其映射的鍵

返回:

與 key 關聯(lián)的前一個值,如果沒有 key 映射,則返回 null。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此map不支持刪除操作
ClassCastException 如果此映射的鍵類型不合適(可選)
NullPointerException 如果指定的鍵為空并且此映射不允許空鍵(可選)

putAll

void putAll(Map<? extends K,? extends V> m)

將所有映射從指定映射復制到此映射(可選操作)。 這個調(diào)用的效果等同于對指定映射中從鍵 k 到值 v 的每個映射調(diào)用一次 put(k, v) 在這個映射上的效果。 如果在操作進行時修改了指定的映射,則此操作的行為是未定義的。

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要存儲在此map中的映射

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射不支持 putAll 操作
ClassCastException 如果指定映射中的鍵或值的類阻止它存儲在此映射中
NullPointerException 如果指定的映射為空,或者此映射不允許空鍵或值,并且指定的映射包含空鍵或值
IllegalArgumentException 如果指定映射中的鍵或值的某些屬性阻止將其存儲在此映射中

clear

void clear()

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

Throws:

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

keySet

Set<K> keySet()

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

返回:

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

values

CollectionV values()

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

返回:

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

entrySet

Set<Map.Entry<K,V>> entrySet()

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

返回:

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

equals

boolean equals(Object o)

比較指定對象與此映射是否相等。 如果給定對象也是一個映射并且兩個映射表示相同的映射,則返回 true。 更正式地說,如果 m1.entrySet().equals(m2.entrySet()),則兩個映射 m1 和 m2 表示相同的映射。 這確保了 equals 方法在 Map 接口的不同實現(xiàn)中正常工作。

覆蓋:

類 Object 中的等于

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要與此map比較是否相等的對象

返回:

如果指定的對象等于此map,則為 true

hashCode

int hashCode()

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

覆蓋:

類 Object 中的 hashCode

返回:

此map的哈希碼值

getOrDefault

default V getOrDefault(Object key, V defaultValue)

返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 defaultValue。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要返回其關聯(lián)值的鍵
defaultValue 鍵的默認映射

返回:

指定鍵映射到的值,如果此映射不包含該鍵的映射,則為 defaultValue

Throws:

Throw名稱 Throw描述
ClassCastException 如果此映射的鍵類型不合適(可選)
NullPointerException 如果指定的鍵為空并且此映射不允許空鍵(可選)

forEach

default void forEach(BiConsumer<? super K,? super V> action)

對該映射中的每個條目執(zhí)行給定的操作,直到處理完所有條目或該操作引發(fā)異常。 除非實現(xiàn)類另有規(guī)定,否則按照條目集迭代的順序執(zhí)行動作(如果指定了迭代順序)。動作拋出的異常將轉(zhuǎn)發(fā)給調(diào)用者。

參數(shù):

參數(shù)名稱 參數(shù)描述
action 為每個條目執(zhí)行的操作

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定的操作為空
ConcurrentModificationException 如果在迭代過程中發(fā)現(xiàn)條目被刪除

replaceAll

default void replaceAll(BiFunction<? super K,? super V,? extends V> function)

將每個條目的值替換為對該條目調(diào)用給定函數(shù)的結果,直到所有條目都已處理或該函數(shù)引發(fā)異常。 函數(shù)拋出的異常被轉(zhuǎn)發(fā)給調(diào)用者。

參數(shù):

參數(shù)名稱 參數(shù)描述
function 應用于每個條目的函數(shù)

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射的條目集合迭代器不支持集合操作。
ClassCastException 如果替換值的類別阻止它存儲在此映射中
NullPointerException 如果指定的函數(shù)為空,或者指定的替換值為空,并且此映射不允許空值
ClassCastException 如果替換值的類型不適合此映射(可選)
NullPointerException 如果函數(shù)或替換值為空,并且此映射不允許空鍵或值(可選)
IllegalArgumentException 如果替換值的某些屬性阻止它存儲在此映射中(可選)
ConcurrentModificationException 如果在迭代過程中發(fā)現(xiàn)條目被刪除

putIfAbsent

default V putIfAbsent(K key, V value)

如果指定的鍵尚未與值關聯(lián)(或映射到 null),則將其與給定值關聯(lián)并返回 null,否則返回當前值。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
value 與指定鍵關聯(lián)的值

返回:

與指定鍵關聯(lián)的前一個值,如果鍵沒有映射,則返回 null。 (如果實現(xiàn)支持 null 值,則返回 null 還可以指示映射先前將 null 與鍵關聯(lián)。)

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果鍵或值的類型不適合此映射(可選)
NullPointerException 如果指定的鍵或值為空,并且此映射不允許空鍵或值(可選)
IllegalArgumentException 如果指定鍵或值的某些屬性阻止它存儲在此映射中(可選)

remove

default boolean remove(Object key, Object value)

僅當當前映射到指定值時,才刪除指定鍵的條目。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
value 預期與指定鍵關聯(lián)的值

返回:

如果值已被刪除,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此map不支持刪除操作(可選)
ClassCastException 如果鍵或值的類型不適合此映射(可選)
NullPointerException 如果指定的鍵或值為空,并且此映射不允許空鍵或值(可選)

replace

default boolean replace(K key, V oldValue, V newValue)

僅當當前映射到指定值時才替換指定鍵的條目。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
oldValue 預期與指定鍵關聯(lián)的值
newValue 與指定鍵關聯(lián)的值

返回:

如果值被替換,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中
NullPointerException 如果指定的鍵或 newValue 為空,并且此映射不允許空鍵或值
NullPointerException 如果 oldValue 為 null 并且此映射不允許 null 值(可選)
IllegalArgumentException 如果指定鍵或值的某些屬性阻止它存儲在此映射中

replace

default V replace(K key, V value)

僅當當前映射到某個值時才替換指定鍵的條目。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
value 與指定鍵關聯(lián)的值

返回:

與指定鍵關聯(lián)的前一個值,如果鍵沒有映射,則返回 null。 (如果實現(xiàn)支持 null 值,則返回 null 還可以指示映射先前將 null 與鍵關聯(lián)。)

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中(可選)
NullPointerException 如果指定的鍵或值為空,并且此映射不允許空鍵或值
IllegalArgumentException 如果指定鍵或值的某些屬性阻止它存儲在此映射中

computeIfAbsent

default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)

如果指定的鍵尚未與值關聯(lián)(或映射為 null),則嘗試使用給定的映射函數(shù)計算其值并將其輸入到此映射中,除非為 null。

如果函數(shù)返回 null,則不記錄映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且不記錄任何映射。 最常見的用法是構造一個新對象作為初始映射值或記憶結果,如下所示:

  map.computeIfAbsent(key, k -> new Value(f(k))); 

或者實現(xiàn)一個多值映射,Map<K,Collection<V>>,每個鍵支持多個值:

  map.computeIfAbsent(key, k -> new HashSet<V>()).add(v); 

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
mappingFunction 計算值的函數(shù)

返回:

與指定鍵關聯(lián)的當前(現(xiàn)有或計算的)值,如果計算的值為 null,則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定鍵為空且此映射不支持空鍵,或者mappingFunction 為空
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中(可選)

computeIfPresent

default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)

如果指定鍵的值存在且非空,則嘗試在給定鍵及其當前映射值的情況下計算新映射。

如果函數(shù)返回 null,則刪除映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當前映射保持不變。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
remappingFunction 計算值的函數(shù)

返回:

與指定鍵關聯(lián)的新值,如果沒有,則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定鍵為空且此映射不支持空鍵,或者 remappingFunction 為空
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中(可選)

compute

default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)

嘗試計算指定鍵及其當前映射值的映射(如果沒有當前映射,則為 null)。 例如,要創(chuàng)建或附加 String msg 到值映射:

  map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))

(方法 merge() 通常更容易用于此類目的。)

如果函數(shù)返回 null,則刪除映射(如果最初不存在,則保持不存在)。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當前映射保持不變。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與指定值關聯(lián)的鍵
remappingFunction 計算值的函數(shù)

返回:

與指定鍵關聯(lián)的新值,如果沒有,則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定鍵為空且此映射不支持空鍵,或者 remappingFunction 為空
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中(可選)

merge

default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)

如果指定的鍵尚未與值關聯(lián)或與 null 關聯(lián),則將其與給定的非 null 值關聯(lián)。 否則,將關聯(lián)的值替換為給定重映射函數(shù)的結果,如果結果為 null,則將其刪除。 當為一個鍵組合多個映射值時,此方法可能很有用。 例如,要創(chuàng)建或附加 String msg 到值映射:

  map.merge(key, msg, String::concat) 

如果函數(shù)返回 null,則刪除映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當前映射保持不變。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 與結果值關聯(lián)的鍵
value 要與鍵關聯(lián)的現(xiàn)有值合并的非空值,或者如果沒有現(xiàn)有值或空值與鍵關聯(lián),則與鍵關聯(lián)
remappingFunction 重新計算值的函數(shù)(如果存在)

返回:

與指定鍵關聯(lián)的新值,如果沒有值與該鍵關聯(lián),則為 null

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此映射不支持 put 操作(可選)
ClassCastException 如果指定鍵或值的類阻止它存儲在此映射中(可選)
NullPointerException 如果指定的鍵為空且此映射不支持空鍵或值或 remappingFunction 為空
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號