public class EnumMap
extends AbstractMap<K extends Enum<K>, V>
implements Serializable, Cloneable
java.lang.Object | ||
↳ | java.util.AbstractMap<K extends java.lang.Enum<K>, V> | |
↳ | java.util.EnumMap<K extends java.lang.Enum<K>, V> |
用于枚举类型键的专用Map
实现。 枚举映射中的所有键必须来自单个枚举类型,该映射在创建映射时明确或隐含地指定。 枚举映射在内部表示为数组。 这种表示非常紧凑和高效。
枚举映射按键的自然顺序维护(枚举常量的声明顺序)。 这反映在由所述集合的视图(返回的迭代keySet()
, entrySet()
,和values()
)。
由集合视图返回的迭代器是 弱一致的 :它们永远不会抛出 ConcurrentModificationException
,它们可能会或可能不会显示迭代过程中发生的对映射的任何修改的影响。
空键不被允许。 尝试插入空密钥将抛出NullPointerException
。 尝试测试是否存在空密钥或删除一个将会正常工作。 空值是允许的。
像大多数收集实现EnumMap不同步。 如果多个线程同时访问一个枚举映射,并且至少有一个线程修改映射,则它应该在外部同步。 这通常是通过同步某些自然封装枚举映射的对象来完成的。 如果不存在这样的对象,则应使用synchronizedMap(Map
方法“映射”地图。 这最好在创建时完成,以防止意外的非同步访问:
Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
实现注意事项:所有基本操作均在恒定时间内执行 他们很可能(虽然不能保证)比他们的HashMap
同行更快。
本课是 Java Collections Framework的成员。
也可以看看:
Public constructors |
|
---|---|
EnumMap(Class<K> keyType) 用指定的键类型创建一个空的枚举映射。 |
|
EnumMap(EnumMap<K, ? extends V> m) 使用与指定的枚举映射相同的键类型创建枚举映射,最初包含相同的映射(如果有)。 |
|
EnumMap(Map<K, ? extends V> m) 创建从指定映射初始化的枚举映射。 |
Public methods |
|
---|---|
void |
clear() 从此映射中删除所有映射。 |
EnumMap<K, V> |
clone() 返回此枚举映射的浅表副本。 |
boolean |
containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。 |
boolean |
containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true 。 |
Set<Entry<K, V>> |
entrySet() 返回此映射中映射的映射的 |
boolean |
equals(Object o) 将指定的对象与此映射进行比较以获得相等性。 |
V |
get(Object key) 返回指定键映射到的值,如果此映射不包含键映射,则返回 |
int |
hashCode() 返回此映射的哈希码值。 |
Set<K> |
keySet() 返回此映射中包含的键的 |
V |
put(K key, V value) 将指定的值与此映射中指定的键关联。 |
void |
putAll(Map<? extends K, ? extends V> m) 将指定地图中的所有映射复制到此地图。 |
V |
remove(Object key) 如果存在,则从该映射中移除该键的映射。 |
int |
size() 返回此映射中键 - 值映射的数量。 |
Collection<V> |
values() 返回此映射中包含的值的 |
Inherited methods |
|
---|---|
From class java.util.AbstractMap
|
|
From class java.lang.Object
|
|
From interface java.util.Map
|
EnumMap (Class<K> keyType)
用指定的键类型创建一个空的枚举映射。
Parameters | |
---|---|
keyType |
Class : the class object of the key type for this enum map |
Throws | |
---|---|
NullPointerException |
if keyType is null |
EnumMap (EnumMap<K, ? extends V> m)
使用与指定的枚举映射相同的键类型创建枚举映射,最初包含相同的映射(如果有)。
Parameters | |
---|---|
m |
EnumMap : the enum map from which to initialize this enum map |
Throws | |
---|---|
NullPointerException |
if m is null |
EnumMap (Map<K, ? extends V> m)
创建从指定映射初始化的枚举映射。 如果指定的映射是EnumMap实例,则此构造函数的行为与EnumMap(EnumMap)
行为相同。 否则,指定的映射必须至少包含一个映射(以确定新的枚举映射的键类型)。
Parameters | |
---|---|
m |
Map : the map from which to initialize this enum map |
Throws | |
---|---|
IllegalArgumentException |
if m is not an EnumMap instance and contains no mappings |
NullPointerException |
if m is null |
EnumMap<K, V> clone ()
返回此枚举映射的浅表副本。 (这些值本身没有被克隆。
Returns | |
---|---|
EnumMap<K, V> |
a shallow copy of this enum map |
boolean containsKey (Object key)
如果此映射包含指定键的映射,则返回 true 。
Parameters | |
---|---|
key |
Object : the key whose presence in this map is to be tested |
Returns | |
---|---|
boolean |
true if this map contains a mapping for the specified key |
boolean containsValue (Object value)
如果此映射将一个或多个键映射到指定值,则返回 true 。
Parameters | |
---|---|
value |
Object : the value whose presence in this map is to be tested |
Returns | |
---|---|
boolean |
true if this map maps one or more keys to this value |
Set<Entry<K, V>> entrySet ()
返回此映射中包含的映射的Set
视图。 返回的集合遵守keySet()
列出的总体合同。 该集合的迭代器将按照键的顺序返回映射,这是它们的自然顺序(声明枚举常量的顺序)。
Returns | |
---|---|
Set<Entry<K, V>> |
a set view of the mappings contained in this enum map |
boolean equals (Object o)
将指定的对象与此映射进行比较以获得相等性。 如果给定的对象也是一个映射,并且这两个映射表示相同的映射,则返回true ,如equals(Object)
合同中所述。
Parameters | |
---|---|
o |
Object : the object to be compared for equality with this map |
Returns | |
---|---|
boolean |
true if the specified object is equal to this map |
V get (Object key)
返回指定键映射到的值,如果此映射不包含键映射,则返回 null
。
更正式地说,如果该映射包含从键k
到值v
的映射(例如(key == k)
,则该方法返回v
; 否则返回null
。 (最多可以有一个这样的映射。)
返回值null
不一定表示映射不包含该键的映射; 地图也可能明确将密钥映射到null
。 containsKey
操作可用于区分这两种情况。
Parameters | |
---|---|
key |
Object : the key whose associated value is to be returned |
Returns | |
---|---|
V |
the value to which the specified key is mapped, or null if this map contains no mapping for the key |
int hashCode ()
返回此映射的哈希码值。 映射的散列码被定义为映射中每个条目的散列码的总和。
Returns | |
---|---|
int |
the hash code value for this map |
Set<K> keySet ()
返回此映射中包含的键的Set
视图。 返还的集合服从keySet()
概述的一般合同。 集合的迭代器将按照自然顺序返回键(枚举常量声明的顺序)。
Returns | |
---|---|
Set<K> |
a set view of the keys contained in this enum map |
V put (K key, V value)
将指定的值与此映射中指定的键关联。 如果映射先前包含此键的映射,则旧值将被替换。
Parameters | |
---|---|
key |
K : the key with which the specified value is to be associated |
value |
V : the value to be associated with the specified key |
Returns | |
---|---|
V |
the previous value associated with specified key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with the specified key.) |
Throws | |
---|---|
NullPointerException |
if the specified key is null |
void putAll (Map<? extends K, ? extends V> m)
将指定地图中的所有映射复制到此地图。 这些映射将替换此映射对当前指定映射中的任何键的任何映射。
Parameters | |
---|---|
m |
Map : the mappings to be stored in this map |
Throws | |
---|---|
NullPointerException |
the specified map is null, or if one or more keys in the specified map are null |
V remove (Object key)
如果存在,则从该映射中移除该键的映射。
Parameters | |
---|---|
key |
Object : the key whose mapping is to be removed from the map |
Returns | |
---|---|
V |
the previous value associated with specified key, or null if there was no entry for key. (A null return can also indicate that the map previously associated null with the specified key.) |
int size ()
返回此映射中键 - 值映射的数量。
Returns | |
---|---|
int |
the number of key-value mappings in this map |
Collection<V> values ()
返回此映射中包含的值的Collection
视图。 退回的收款服从values()
列出的一般合同。 集合的迭代器将按照它们相应的键在映射中出现的顺序返回值,这是它们的自然顺序(声明枚举常量的顺序)。
Returns | |
---|---|
Collection<V> |
a collection view of the values contained in this map |