新聞中心
Hashtable

java.lang.Object
|---java.util.Dictionary
|---|---java.util.Hashtable
public class Hashtable
extends Dictionary
implements Map, Cloneable, Serializable
這個(gè)類實(shí)現(xiàn)了一個(gè)哈希表,它將鍵映射到值。 任何非空對(duì)象都可以用作鍵或值。
要成功地從哈希表中存儲(chǔ)和檢索對(duì)象,用作鍵的對(duì)象必須實(shí)現(xiàn) hashCode 方法和 equals 方法。
Hashtable 的實(shí)例有兩個(gè)影響其性能的參數(shù):初始容量和負(fù)載因子。 容量是哈希表中的桶數(shù),初始容量只是哈希表創(chuàng)建時(shí)的容量。 注意哈希表是開放的:在“哈希沖突”的情況下,單個(gè)桶存儲(chǔ)多個(gè)條目,必須按順序搜索。 負(fù)載因子是哈希表在其容量自動(dòng)增加之前允許達(dá)到的程度的度量。 初始容量和負(fù)載因子參數(shù)只是實(shí)現(xiàn)的提示。 關(guān)于何時(shí)以及是否調(diào)用 rehash 方法的確切細(xì)節(jié)取決于實(shí)現(xiàn)。
通常,默認(rèn)負(fù)載因子 (.75) 在時(shí)間和空間成本之間提供了良好的折衷。 較高的值會(huì)減少空間開銷,但會(huì)增加查找條目的時(shí)間成本(這反映在大多數(shù) Hashtable 操作中,包括 get 和 put)。
初始容量控制了浪費(fèi)空間和需要重新哈希操作之間的權(quán)衡,這些操作非常耗時(shí)。 如果初始容量大于 Hashtable 將包含的最大條目數(shù)除以其負(fù)載因子,則不會(huì)發(fā)生重新哈希操作。 但是,將初始容量設(shè)置得太高會(huì)浪費(fèi)空間。
如果要在 Hashtable 中創(chuàng)建許多條目,則創(chuàng)建具有足夠大容量的條目可能比讓它根據(jù)需要執(zhí)行自動(dòng)重新散列以增長(zhǎng)表來(lái)更有效地插入條目。
此示例創(chuàng)建一個(gè)數(shù)字哈希表。 它使用數(shù)字的名稱作為鍵:
Hashtable numbers
= new Hashtable();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
要檢索數(shù)字,請(qǐng)使用以下代碼:
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
由此類的所有“集合視圖方法”返回的集合的迭代器方法返回的迭代器是快速失敗的:如果在創(chuàng)建迭代器后的任何時(shí)間對(duì) Hashtable 進(jìn)行結(jié)構(gòu)修改,除了通過(guò)迭代器自己的刪除之外的任何方式 方法,迭代器將拋出 ConcurrentModificationException。 因此,面對(duì)并發(fā)修改,迭代器快速而干凈地失敗,而不是在未來(lái)不確定的時(shí)間冒任意的、非確定性的行為。 Hashtable 的鍵和元素方法返回的枚舉不是快速失敗的。
請(qǐng)注意,不能保證迭代器的快速失敗行為,因?yàn)橐话銇?lái)說(shuō),在存在不同步的并發(fā)修改的情況下,不可能做出任何硬保證。 快速失敗的迭代器會(huì)盡最大努力拋出 ConcurrentModificationException。 因此,編寫一個(gè)依賴于這個(gè)異常的正確性的程序是錯(cuò)誤的:迭代器的快速失敗行為應(yīng)該只用于檢測(cè)錯(cuò)誤。
從 Java 2 平臺(tái) v1.2 開始,該類被改進(jìn)為實(shí)現(xiàn) Map 接口,使其成為 Java Collections Framework 的成員。 與新的集合實(shí)現(xiàn)不同,Hashtable 是同步的。 如果不需要線程安全的實(shí)現(xiàn),建議使用 HashMap 代替 Hashtable。 如果需要線程安全的高并發(fā)實(shí)現(xiàn),那么建議使用 ConcurrentHashMap 代替 Hashtable。
嵌套類摘要
| 從接口 java.util.Map 繼承的嵌套類/接口 |
|---|
| Map.EntryK,V |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Hashtable() | 構(gòu)造一個(gè)具有默認(rèn)初始容量 (11) 和加載因子 (0.75) 的新的空哈希表。 |
| Hashtable(int initialCapacity) | 使用指定的初始容量和默認(rèn)加載因子 (0.75) 構(gòu)造一個(gè)新的空哈希表。 |
| Hashtable(int initialCapacity, float loadFactor) | 使用指定的初始容量和指定的負(fù)載因子構(gòu)造一個(gè)新的空哈希表。 |
| Hashtable(Map extends K,? extends V> t) | 構(gòu)造一個(gè)與給定 Map 具有相同映射的新哈希表。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | clear() | 清除此哈希表,使其不包含任何鍵。 |
| Object | clone() | 創(chuàng)建此哈希表的淺表副本。 |
| V | compute(K key, BiFunction super K,? super V,? extends V> remappingFunction) | 嘗試計(jì)算指定鍵及其當(dāng)前映射值的映射(如果沒(méi)有當(dāng)前映射,則為 null)。 |
| V | computeIfAbsent(K key, Function super K,? extends V> mappingFunction) | 如果指定的鍵尚未與值關(guān)聯(lián)(或映射為 null),則嘗試使用給定的映射函數(shù)計(jì)算其值并將其輸入到此映射中,除非為 null。 |
| V | computeIfPresent(K key, BiFunction super K,? super V,? extends V> remappingFunction) | 如果指定鍵的值存在且非空,則嘗試在給定鍵及其當(dāng)前映射值的情況下計(jì)算新映射。 |
| boolean | contains(Object value) | 測(cè)試某些鍵是否映射到此哈希表中的指定值。 |
| boolean | containsKey(Object key) | 測(cè)試指定對(duì)象是否是此哈希表中的鍵。 |
| boolean | containsValue(Object value) | 如果此哈希表將一個(gè)或多個(gè)鍵映射到此值,則返回 true。 |
| EnumerationV | elements() | 返回此哈希表中的值的枚舉。 |
| SetMap.EntryK,V | entrySet() | 返回此映射中包含的映射的 Set 視圖。 |
| boolean | equals(Object o) | 根據(jù) Map 接口中的定義,比較指定的 Object 與此 Map 是否相等。 |
| void | forEach(BiConsumer super K,? super V> action) | 對(duì)該映射中的每個(gè)條目執(zhí)行給定的操作,直到處理完所有條目或該操作引發(fā)異常。 |
| V | get(Object key) | 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。 |
| V | getOrDefault(Object key, V defaultValue) | 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 defaultValue。 |
| int | hashCode() | 根據(jù) Map 接口中的定義返回此 Map 的哈希碼值。 |
| boolean | isEmpty() | 測(cè)試此哈希表是否沒(méi)有將鍵映射到值。 |
| EnumerationK | keys() | 返回此哈希表中鍵的枚舉。 |
| SetK | keySet() | 返回此映射中包含的鍵的 Set 視圖。 |
| V | merge(K key, V value, BiFunction super V,? super V,? extends V> remappingFunction) | 如果指定的鍵尚未與值關(guān)聯(lián)或與 null 關(guān)聯(lián),則將其與給定的非 null 值關(guān)聯(lián)。 |
| V | put(K key, V value) | 將指定鍵映射到此哈希表中的指定值。 |
| void | putAll(Map extends K,? extends V> t) | 將所有映射從指定映射復(fù)制到此哈希表。 |
| V | putIfAbsent(K key, V value) | 如果指定的鍵尚未與值關(guān)聯(lián)(或映射到 null),則將其與給定值關(guān)聯(lián)并返回 null,否則返回當(dāng)前值。 |
| protected void | rehash() | 增加此哈希表的容量并在內(nèi)部重新組織此哈希表,以便更有效地容納和訪問(wèn)其條目。 |
| V | remove(Object key) | 從此哈希表中刪除鍵(及其對(duì)應(yīng)的值)。 |
| boolean | remove(Object key, Object value) | 僅當(dāng)當(dāng)前映射到指定值時(shí),才刪除指定鍵的條目。 |
| V | replace(K key, V value) | 僅當(dāng)當(dāng)前映射到某個(gè)值時(shí)才替換指定鍵的條目。 |
| boolean | replace(K key, V oldValue, V newValue) | 僅當(dāng)當(dāng)前映射到指定值時(shí)才替換指定鍵的條目。 |
| void | replaceAll(BiFunction super K,? super V,? extends V> function) | 將每個(gè)條目的值替換為對(duì)該條目調(diào)用給定函數(shù)的結(jié)果,直到所有條目都已處理或該函數(shù)引發(fā)異常。 |
| int | size() | 返回此哈希表中的鍵數(shù)。 |
| String | toString() | 以一組條目的形式返回此 Hashtable 對(duì)象的字符串表示形式,用大括號(hào)括起來(lái)并由 ASCII 字符“、”(逗號(hào)和空格)分隔。 |
| CollectionV | values() | 返回此映射中包含的值的集合視圖。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| finalize, getClass, notify, notifyAll, wait, wait, wait |
構(gòu)造函數(shù)詳細(xì)信息
Hashtable
public Hashtable(int initialCapacity, float loadFactor)
使用指定的初始容量和指定的負(fù)載因子構(gòu)造一個(gè)新的空哈希表。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| initialCapacity | 哈希表的初始容量。 |
| loadFactor | 哈希表的負(fù)載因子。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果初始容量小于零,或者負(fù)載因子為非正數(shù)。 |
Hashtable
public Hashtable(int initialCapacity)
使用指定的初始容量和默認(rèn)加載因子 (0.75) 構(gòu)造一個(gè)新的空哈希表。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| initialCapacity | 哈希表的初始容量。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果初始容量小于零。 |
Hashtable
public Hashtable()
構(gòu)造一個(gè)具有默認(rèn)初始容量 (11) 和加載因子 (0.75) 的新的空哈希表。
Hashtable
public Hashtable(Map extends K,? extends V> t)
構(gòu)造一個(gè)與給定 Map 具有相同映射的新哈希表。 哈希表的初始容量足以容納給定 Map 中的映射和默認(rèn)加載因子 (0.75)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| t | 其映射將放置在此 map 中的 map。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果指定的 map 為空。 |
方法詳情
size
public int size()
返回此哈希表中的鍵數(shù)。
指定者:
接口 MapK,V 中的大小
指定者:
DictionaryK,V 類中的大小
返回:
此哈希表中的鍵數(shù)。
isEmpty
public boolean isEmpty()
測(cè)試此哈希表是否沒(méi)有將鍵映射到值。
指定者:
接口 MapK,V 中的 isEmpty
指定者:
類 DictionaryK,V 中的 isEmpty
返回:
如果此哈希表沒(méi)有將鍵映射到值,則為 true; 否則為 false。
keys
public EnumerationK keys()
返回此哈希表中鍵的枚舉。
指定者:
DictionaryK,V 類中的鍵
返回:
此哈希表中鍵的枚舉。
elements
public EnumerationV elements()
返回此哈希表中的值的枚舉。 對(duì)返回的對(duì)象使用 Enumeration 方法按順序獲取元素。
指定者:
DictionaryK,V 類中的元素
返回:
此哈希表中的值的枚舉。
contains
public boolean contains(Object value)
測(cè)試某些鍵是否映射到此哈希表中的指定值。 此操作比 containsKey 方法更昂貴。
請(qǐng)注意,此方法在功能上與 containsValue 相同(它是集合框架中 Map 接口的一部分)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 要搜索的值 |
返回:
當(dāng)且僅當(dāng)某些鍵映射到由 equals 方法確定的此哈希表中的 value 參數(shù)時(shí),才為 true; 否則為 false。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 value 為空 |
containsValue
public boolean containsValue(Object value)
如果此哈希表將一個(gè)或多個(gè)鍵映射到此值,則返回 true。
請(qǐng)注意,此方法在功能上與 contains 相同(早于 Map 接口)。
指定者:
接口 MapK,V 中的 containsValue
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 要測(cè)試其在此哈希表中的存在的值 |
返回:
如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則為 true
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 value 為空 |
containsKey
public boolean containsKey(Object key)
測(cè)試指定對(duì)象是否是此哈希表中的鍵。
指定者:
containsKey 在接口 MapK,V
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 可能的 key |
返回:
當(dāng)且僅當(dāng)指定對(duì)象是此哈希表中的鍵(由 equals 方法確定)時(shí)才為 true; 否則為false。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 key 為空 |
get
public V get(Object key)
返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。
更正式地說(shuō),如果此映射包含從鍵 k 到值 v 的映射,滿足 (key.equals(k)),則此方法返回 v; 否則返回null。 (最多可以有一個(gè)這樣的映射。)
指定者:
進(jìn)入接口 MapK,V
指定者:
進(jìn)入類 DictionaryK,V
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 要返回其關(guān)聯(lián)值的鍵 |
返回:
指定鍵映射到的值,如果此映射不包含該鍵的映射,則為 null
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果指定的鍵為空 |
rehash
protected void rehash()
增加此哈希表的容量并在內(nèi)部重新組織此哈希表,以便更有效地容納和訪問(wèn)其條目。 當(dāng)哈希表中的鍵數(shù)超過(guò)此哈希表的容量和負(fù)載因子時(shí),將自動(dòng)調(diào)用此方法。
put
public V put(K key, V value)
將指定鍵映射到此哈希表中的指定值。 鍵和值都不能為空。
可以通過(guò)使用與原始鍵相同的鍵調(diào)用 get 方法來(lái)檢索該值。
指定者:
放入接口 MapK,V
指定者:
放入類 DictionaryK,V
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 哈希表鍵 |
| value | 值 |
返回:
此哈希表中指定鍵的前一個(gè)值,如果沒(méi)有,則返回 null
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 key 或者 value 為空 |
remove
public V remove(Object key)
從此哈希表中刪除鍵(及其對(duì)應(yīng)的值)。 如果鍵不在哈希表中,則此方法不執(zhí)行任何操作。
指定者:
在接口 MapK,V 中刪除
指定者:
在類 DictionaryK,V 中刪除
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 需要?jiǎng)h除的密鑰 |
返回:
鍵在此哈希表中映射到的值,如果鍵沒(méi)有映射,則返回 null
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 key 為空 |
putAll
public void putAll(Map extends K,? extends V> t)
將所有映射從指定映射復(fù)制到此哈希表。 這些映射將替換此哈希表對(duì)當(dāng)前指定映射中的任何鍵的任何映射。
指定者:
putAll在接口MapK,V中
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| t | 要存儲(chǔ)在此 map 中的映射 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果指定的 map 為空 |
clear
public void clear()
清除此哈希表,使其不包含任何鍵。
指定者:
在 interface MapK,V 中清除
clone
public Object clone()
創(chuàng)建此哈希表的淺表副本。 哈希表本身的所有結(jié)構(gòu)都被復(fù)制,但鍵和值沒(méi)有被克隆。 這是一個(gè)相對(duì)昂貴的操作。
覆蓋:
在類 Object 中克隆
返回:
哈希表的克隆
toString
public String toString()
以一組條目的形式返回此 Hashtable 對(duì)象的字符串表示形式,用大括號(hào)括起來(lái)并由 ASCII 字符“、”(逗號(hào)和空格)分隔。 每個(gè)條目都呈現(xiàn)為鍵、等號(hào) = 和關(guān)聯(lián)的元素,其中 toString 方法用于將鍵和元素轉(zhuǎn)換為字符串。
覆蓋:
類 Object 中的 toString
返回:
此哈希表的字符串表示形式
keySet
public SetK keySet()
返回此映射中包含的鍵的 Set 視圖。 集合由地圖支持,因此對(duì)地圖的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(通過(guò)迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過(guò) Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的 keySet
返回:
此 map 中包含的鍵的集合視圖
entrySet
public SetMap.EntryK,V entrySet()
返回此映射中包含的映射的 Set 視圖。 集合由地圖支持,因此對(duì)地圖的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(通過(guò)迭代器自己的刪除操作或通過(guò)迭代器返回的映射條目上的 setValue 操作除外),則迭代的結(jié)果是未定義的。 該集合支持元素移除,即通過(guò) Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的 entrySet
返回:
此 map 中包含的映射的集合視圖
values
public CollectionV values()
返回此映射中包含的值的集合視圖。 集合由地圖支持,因此對(duì)地圖的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(通過(guò)迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過(guò) Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。
指定者:
接口 MapK,V 中的值
返回:
此 map 中包含的值的集合視圖
equals
public boolean equals(Object o)
根據(jù) Map 接口中的定義,比較指定的 Object 與此 Map 是否相等。
指定者:
接口 MapK,V 中的等于
覆蓋:
類 Object 中的等于
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| o | 要與此哈希表比較是否相等的對(duì)象 |
返回:
如果指定的 Object 等于此 Map,則為 true
hashCode
public int hashCode()
根據(jù) Map 接口中的定義返回此 Map 的哈希碼值。
指定者:
接口 MapK,V 中的 hashCode
覆蓋:
類 Object 中的 hashCode
返回:
此對(duì)象的哈希碼值。
getOrDefault
public V getOrDefault(Object key, V defaultValue)
從接口復(fù)制的描述:map
返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 defaultValue。
指定者:
接口 MapK,V 中的 getOrDefault
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 要返回其關(guān)聯(lián)值的鍵 |
| defaultValue | 鍵的默認(rèn)映射 |
返回:
指定鍵映射到的值,如果此映射不包含該鍵的映射,則為 defaultValue
forEach
public void forEach(BiConsumer super K,? super V> action)
從接口復(fù)制的描述:map
對(duì)該映射中的每個(gè)條目執(zhí)行給定的操作,直到處理完所有條目或該操作引發(fā)異常。 除非實(shí)現(xiàn)類另有規(guī)定,否則按照條目集迭代的順序執(zhí)行動(dòng)作(如果指定了迭代順序)。動(dòng)作拋出的異常將轉(zhuǎn)發(fā)給調(diào)用者。
指定者:
接口 MapK,V 中的 forEach
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| action | 為每個(gè)條目執(zhí)行的操作 |
replaceAll
public void replaceAll(BiFunction super K,? super V,? extends V> function)
從接口復(fù)制的描述:map
將每個(gè)條目的值替換為對(duì)該條目調(diào)用給定函數(shù)的結(jié)果,直到所有條目都已處理或該函數(shù)引發(fā)異常。 函數(shù)拋出的異常被轉(zhuǎn)發(fā)給調(diào)用者。
指定者:
接口 MapK,V 中的 replaceAll
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| function | 應(yīng)用于每個(gè)條目的函數(shù) |
putIfAbsent
public V putIfAbsent(K key, V value)
從接口復(fù)制的描述:map
如果指定的鍵尚未與值關(guān)聯(lián)(或映射到 null),則將其與給定值關(guān)聯(lián)并返回 null,否則返回當(dāng)前值。
指定者:
將IfAbsent放入接口MapK,V
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| value | 與指定鍵關(guān)聯(lián)的值 |
返回:
與指定鍵關(guān)聯(lián)的前一個(gè)值,如果鍵沒(méi)有映射,則返回 null。 (如果實(shí)現(xiàn)支持 null 值,則返回 null 還可以指示映射先前將 null 與鍵關(guān)聯(lián)。)
remove
public boolean remove(Object key, Object value)
從接口復(fù)制的描述:map
僅當(dāng)當(dāng)前映射到指定值時(shí),才刪除指定鍵的條目。
指定者:
在接口 MapK,V 中刪除
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| value | 預(yù)期與指定鍵關(guān)聯(lián)的值 |
返回:
如果值已被刪除,則為 true
replace
public boolean replace(K key, V oldValue, V newValue)
從接口復(fù)制的描述:map
僅當(dāng)當(dāng)前映射到指定值時(shí)才替換指定鍵的條目。
指定者:
在接口 MapK,V 中替換
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| oldValue | 預(yù)期與指定鍵關(guān)聯(lián)的值 |
| newValue | 與指定鍵關(guān)聯(lián)的值 |
返回:
如果值被替換,則為 true
replace
public V replace(K key, V value)
從接口復(fù)制的描述:map
僅當(dāng)當(dāng)前映射到某個(gè)值時(shí)才替換指定鍵的條目。
指定者:
在接口 MapK,V 中替換
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| value | 與指定鍵關(guān)聯(lián)的值 |
返回:
與指定鍵關(guān)聯(lián)的前一個(gè)值,如果鍵沒(méi)有映射,則返回 null。 (如果實(shí)現(xiàn)支持 null 值,則返回 null 還可以指示映射先前將 null 與鍵關(guān)聯(lián)。)
computeIfAbsent
public V computeIfAbsent(K key, Function super K,? extends V> mappingFunction)
從接口復(fù)制的描述:map
如果指定的鍵尚未與值關(guān)聯(lián)(或映射為 null),則嘗試使用給定的映射函數(shù)計(jì)算其值并將其輸入到此映射中,除非為 null。
如果函數(shù)返回 null,則不記錄映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且不記錄任何映射。 最常見的用法是構(gòu)造一個(gè)新對(duì)象作為初始映射值或記憶結(jié)果,如下所示:
map.computeIfAbsent(key, k -> new Value(f(k)));
或者實(shí)現(xiàn)一個(gè)多值映射,Map
map.computeIfAbsent(key, k -> new HashSet()).add(v);
指定者:
接口 MapK,V 中的 computeIfAbsent
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| mappingFunction | 計(jì)算值的函數(shù) |
返回:
與指定鍵關(guān)聯(lián)的當(dāng)前(現(xiàn)有或計(jì)算的)值,如果計(jì)算的值為 null,則為 null
computeIfPresent
public V computeIfPresent(K key, BiFunction super K,? super V,? extends V> remappingFunction)
從接口復(fù)制的描述:map
如果指定鍵的值存在且非空,則嘗試在給定鍵及其當(dāng)前映射值的情況下計(jì)算新映射。
如果函數(shù)返回 null,則刪除映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當(dāng)前映射保持不變。
指定者:
接口 MapK,V 中的 computeIfPresent
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| remappingFunction | 計(jì)算值的函數(shù) |
返回:
與指定鍵關(guān)聯(lián)的新值,如果沒(méi)有,則為 null
compute
public V compute(K key, BiFunction super K,? super V,? extends V> remappingFunction)
從接口復(fù)制的描述:map
嘗試計(jì)算指定鍵及其當(dāng)前映射值的映射(如果沒(méi)有當(dāng)前映射,則為 null)。 例如,要?jiǎng)?chuàng)建或附加 String msg 到值映射:
map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(方法 merge() 通常更容易用于此類目的。)
如果函數(shù)返回 null,則刪除映射(如果最初不存在,則保持不存在)。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當(dāng)前映射保持不變。
指定者:
在接口 MapK,V 中計(jì)算
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與指定值關(guān)聯(lián)的鍵 |
| remappingFunction | 計(jì)算值的函數(shù) |
返回:
與指定鍵關(guān)聯(lián)的新值,如果沒(méi)有,則為 null
merge
public V merge(K key, V value, BiFunction super V,? super V,? extends V> remappingFunction)
從接口復(fù)制的描述:map
如果指定的鍵尚未與值關(guān)聯(lián)或與 null 關(guān)聯(lián),則將其與給定的非 null 值關(guān)聯(lián)。 否則,將關(guān)聯(lián)的值替換為給定重映射函數(shù)的結(jié)果,如果結(jié)果為 null,則將其刪除。 當(dāng)為一個(gè)鍵組合多個(gè)映射值時(shí),此方法可能很有用。 例如,要?jiǎng)?chuàng)建或附加 String msg 到值映射:
map.merge(key, msg, String::concat)
如果函數(shù)返回 null,則刪除映射。 如果函數(shù)本身拋出(未經(jīng)檢查的)異常,則重新拋出異常,并且當(dāng)前映射保持不變。
指定者:
在接口 MapK,V 中合并
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 與結(jié)果值關(guān)聯(lián)的鍵 |
| value | 要與鍵關(guān)聯(lián)的現(xiàn)有值合并的非空值,或者如果沒(méi)有現(xiàn)有值或空值與鍵關(guān)聯(lián),則與鍵關(guān)聯(lián) |
| remappingFunction | 重新計(jì)算值的函數(shù)(如果存在) |
返回:
與指定鍵關(guān)聯(lián)的新值,如果沒(méi)有值與該鍵關(guān)聯(lián),則為 null
分享題目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSHashtable
文章鏈接:http://m.fisionsoft.com.cn/article/ccedjsi.html


咨詢
建站咨詢
