鴻蒙OS EnumMap

2022-07-23 14:27 更新

EnumMap

java.lang.Object

|---java.util.AbstractMap<K,V&

|---|---java.util.EnumMap<K,V&

public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable, Cloneable

用于枚舉類型鍵的專用 Map 實(shí)現(xiàn)。 枚舉映射中的所有鍵都必須來自創(chuàng)建映射時(shí)顯式或隱式指定的單個(gè)枚舉類型。 枚舉映射在內(nèi)部表示為數(shù)組。 這種表示非常緊湊和高效。

枚舉映射以其鍵的自然順序(聲明枚舉常量的順序)維護(hù)。這反映在集合視圖(keySet()、entrySet() 和 values())返回的迭代器中。

集合視圖返回的迭代器是弱一致的:它們永遠(yuǎn)不會(huì)拋出 ConcurrentModificationException 并且它們可能會(huì)或可能不會(huì)顯示在迭代過程中對(duì)映射進(jìn)行的任何修改的影響。

不允許使用空鍵。嘗試插入空鍵將引發(fā) NullPointerException。但是,嘗試測試是否存在空鍵或刪除空鍵將正常運(yùn)行。允許空值。

像大多數(shù)集合實(shí)現(xiàn)一樣,EnumMap 是不同步的。如果多個(gè)線程同時(shí)訪問一個(gè)枚舉映射,并且至少有一個(gè)線程修改了映射,則它應(yīng)該在外部同步。這通常是通過同步一些自然封裝枚舉映射的對(duì)象來完成的。如果不存在這樣的對(duì)象,則應(yīng)使用 Collections#synchronizedMap 方法“包裝”地圖。這最好在創(chuàng)建時(shí)完成,以防止意外的不同步訪問:

     Map<EnumKey, V> m
         = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));

實(shí)施說明:所有基本操作都在恒定時(shí)間內(nèi)執(zhí)行。 它們很可能(盡管不能保證)比它們的 HashMap 對(duì)應(yīng)物更快。

此類是 Java 集合框架的成員。

嵌套類摘要

從類 java.util.AbstractMap 繼承的嵌套類/接口
AbstractMap.SimpleEntryK,V, AbstractMap.SimpleImmutableEntryK,V
從接口 java.util.Map 繼承的嵌套類/接口
Map.EntryK,V

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
EnumMap(ClassK keyType) 創(chuàng)建具有指定鍵類型的空枚舉映射。
EnumMap(EnumMap<K,? extends V> m) 創(chuàng)建一個(gè)與指定枚舉映射具有相同鍵類型的枚舉映射,最初包含相同的映射(如果有)。
EnumMap(Map<K,? extends V> m) 創(chuàng)建一個(gè)從指定映射初始化的枚舉映射。

方法總結(jié)

修飾符和類型 方法 描述
void clear() 從此映射中刪除所有映射。
EnumMapK,V clone() 返回此枚舉映射的淺表副本。
boolean containsKey(Object key) 如果此映射包含指定鍵的映射,則返回 true。
boolean containsValue(Object value) 如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true。
SetMap.EntryK,V entrySet() 返回此映射中包含的映射的 Set 視圖。
boolean equals(Object o) 比較指定對(duì)象與此映射是否相等。
V get(Object key) 返回指定鍵映射到的值,如果此映射不包含該鍵的映射,則返回 null。
int hashCode() 返回此映射的哈希碼值。
SetK keySet() 返回此映射中包含的鍵的 Set 視圖。
V put(K key, V value) 將指定的值與此映射中的指定鍵相關(guān)聯(lián)。
void putAll(Map<? extends K,? extends V> m) 將所有映射從指定映射復(fù)制到此映射。
V remove(Object key) 如果存在,則從此映射中刪除此鍵的映射。
int size() 返回此映射中鍵值映射的數(shù)量。
CollectionV values() 返回此映射中包含的值的集合視圖。
從類 java.util.AbstractMap 繼承的方法
isEmpty, toString
從接口 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ù)詳細(xì)信息

EnumMap

public EnumMap(ClassK keyType)

創(chuàng)建具有指定鍵類型的空枚舉映射。

參數(shù):

參數(shù)名稱 參數(shù)描述
keyType 此枚舉映射的鍵類型的類對(duì)象

Throws:

Throw名稱 Throw描述
NullPointerException 如果 keyType 為空

EnumMap

public EnumMap(EnumMap<K,? extends V> m)

創(chuàng)建一個(gè)與指定枚舉映射具有相同鍵類型的枚舉映射,最初包含相同的映射(如果有)。

參數(shù):

參數(shù)名稱 參數(shù)描述
m 從中初始化此枚舉映射的枚舉映射

Throws:

Throw名稱 Throw描述
NullPointerException 如果 m 為空

EnumMap

public EnumMap(Map<K,? extends V> m)

創(chuàng)建一個(gè)從指定映射初始化的枚舉映射。 如果指定的映射是 EnumMap 實(shí)例,則此構(gòu)造函數(shù)的行為與 EnumMap(java.util.EnumMap) 相同。 否則,指定的映射必須包含至少一個(gè)映射(以確定新枚舉映射的鍵類型)。

參數(shù):

參數(shù)名稱 參數(shù)描述
m 從中初始化此枚舉映射的映射

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 m 不是 EnumMap 實(shí)例并且不包含映射
NullPointerException 如果 m 為空

方法詳情

size

public int size()

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

指定者:

接口 Map<K 中的大小擴(kuò)展 EnumK,V>

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的大小

返回:

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

containsValue

public boolean containsValue(Object value)

如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true。

指定者:

接口 Map<K extends EnumK,V> 中的 containsValue

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的 containsValue

參數(shù):

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

返回:

如果此映射將一個(gè)或多個(gè)鍵映射到此值,則為 true

containsKey

public boolean containsKey(Object key)

如果此映射包含指定鍵的映射,則返回 true。

指定者:

接口 Map<K extends EnumK,V> 中的 containsKey

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的 containsKey

參數(shù):

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

返回:

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

get

public V get(Object key)

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

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

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

指定者:

進(jìn)入接口 Map<K extends EnumK,V>

覆蓋:

進(jìn)入類 AbstractMap<K extends EnumK,V>

參數(shù):

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

返回:

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

put

public V put(K key, V value)

將指定的值與此映射中的指定鍵相關(guān)聯(lián)。 如果映射先前包含此鍵的映射,則替換舊值。

指定者:

放入接口 Map<K extends EnumK,V>

覆蓋:

放入類 AbstractMap<K extends EnumK,V>

參數(shù):

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

返回:

與指定鍵關(guān)聯(lián)的先前值,如果沒有鍵映射,則返回 null。 (返回 null 還可以指示映射先前將 null 與指定的鍵相關(guān)聯(lián)。)

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定的鍵為空

remove

public V remove(Object key)

如果存在,則從此映射中刪除此鍵的映射。

指定者:

在接口 Map<K extends EnumK,V> 中刪除

覆蓋:

在類 AbstractMap<K extends EnumK,V> 中刪除

參數(shù):

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

返回:

與指定鍵關(guān)聯(lián)的先前值,如果沒有鍵條目,則為 null。 (返回 null 還可以指示映射先前將 null 與指定的鍵相關(guān)聯(lián)。)

putAll

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

將所有映射從指定映射復(fù)制到此映射。 這些映射將替換此映射對(duì)當(dāng)前指定映射中的任何鍵的任何映射。

指定者:

接口 Map<K extends EnumK,V> 中的 putAll

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的 putAll

參數(shù):

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

Throws:

Throw名稱 Throw描述
NullPointerException 指定映射為空,或者指定映射中的一個(gè)或多個(gè)鍵為空

clear

public void clear()

從此映射中刪除所有映射。

指定者:

在接口 Map<K extends EnumK,V> 中清除

覆蓋:

清除類 AbstractMap<K extends EnumK,V>

keySet

public SetK keySet()

返回此映射中包含的鍵的 Set 視圖。 返回的集合遵守 Map#keySet() 中概述的一般約定。 集合的迭代器將按其自然順序(聲明枚舉常量的順序)返回鍵。

指定者:

接口 Map<K extends EnumK,V> 中的 keySet

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的 keySet

返回:

此枚舉映射中包含的鍵的集合視圖

values

public CollectionV values()

返回此映射中包含的值的集合視圖。 返回的集合遵守 Map#values() 中概述的一般合同。 集合的迭代器將按照它們對(duì)應(yīng)的鍵在 map 中出現(xiàn)的順序返回值,這是它們的自然順序(聲明枚舉常量的順序)。

指定者:

接口 Map<K extends EnumK,V> 中的值

覆蓋:

AbstractMap<K extends EnumK,V> 類中的值

返回:

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

entrySet

public SetMap.EntryK,V entrySet()

返回此映射中包含的映射的 Set 視圖。 返回的集合遵守 Map#keySet() 中概述的一般約定。 集合的迭代器將按照它們的鍵出現(xiàn)在映射中的順序返回映射,這是它們的自然順序(聲明枚舉常量的順序)。

指定者:

接口 Map<K extends EnumK,V> 中的 entrySet

指定者:

類 AbstractMap<K extends EnumK,V> 中的 entrySet

返回:

此枚舉映射中包含的映射的集合視圖

equals

public boolean equals(Object o)

比較指定對(duì)象與此映射是否相等。 如果給定對(duì)象也是一個(gè)映射并且兩個(gè)映射表示相同的映射,則返回 true,如 Map#equals(Object) 協(xié)定中所指定的。

指定者:

接口 Map<K extends EnumK,V> 中的等于

覆蓋:

類 AbstractMap<K extends EnumK,V> 中的等于

參數(shù):

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

返回:

如果指定的對(duì)象等于此 map,則為 true

hashCode

public int hashCode()

返回此地圖的哈希碼值。 映射的哈希碼定義為映射中每個(gè)條目的哈希碼的總和。

指定者:

接口 Map<K extends EnumK,V> 中的 hashCode

覆蓋:

AbstractMap<K extends EnumK,V> 類中的 hashCode

返回:

此映射的哈希碼值

clone

public EnumMapK,V clone()

返回此枚舉映射的淺表副本。值本身沒有被克隆。

覆蓋:

在類 AbstractMap<K extends EnumK,V> 中克隆

返回:

此枚舉映射的淺表副本

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)