public class EnumMap<K extends Enum<K>,V> extends AbstractMap<K,V> implements Serializable, Cloneable
Map
。所有在一个枚举Map钥匙必须来自一个枚举类型,指定显式或隐式,当Map创建。枚举映射在内部表示为阵列。这种表示是非常紧凑和有效的。
枚举映射保持键的自然秩序(即枚举常量的声明顺序)。这反映在迭代器的集合视图中返回(keySet()
,entrySet()
,和values()
)。
返回的迭代器的集合视图是弱一致的:他们不会扔ConcurrentModificationException
他们可能或不可能的发生的同时,迭代过程中Map的任何修改的影响。
不允许空键。试图插入一个空键会把NullPointerException
。尝试测试一个空键的存在或删除一个将,但是,功能正常。允许空值。
最喜欢收集实现EnumMap不同步。如果多个线程同时访问一个枚举的Map,并至少有一个线程修改的Map,它应该是同步的外部。这通常是通过同步的一些对象,自然封装枚举图完成。如果该对象不存在,Map应该是“包裹”使用Collections.synchronizedMap(java.util.Map<K, V>)
方法。最好的做法是在创建时,防止意外的同步访问:
图< enumkey,V>M=收藏。synchronizedmap(新的EnumMap < enumkey,V >(…));
执行说明:所有基本的操作都在固定的时间内执行。他们有可能(但不保证)会比他们的HashMap
更快。
这个班的一员 Java Collections Framework。
EnumSet
,
Serialized Form
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Constructor and Description |
---|
EnumMap(类<K> keyType)
创建一个具有指定键型空枚举图。
|
EnumMap(EnumMap<K,? extends V> m)
创建与指定枚举图相同的密钥类型的枚举图,最初包含相同的映射(如果有的话)。
|
EnumMap(Map<K,? extends V> m)
创建一个枚举Map初始化指定的Map。
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
从这个映射中移除所有的映射。
|
EnumMap<K,V> |
clone()
返回此枚举图浅拷贝。
|
boolean |
containsKey(Object key)
返回
true如果这Map包含一个指定的键映射。
|
boolean |
containsValue(Object value)
返回
true如果映射到指定的值的一个或多个键。
|
Set<Map.Entry<K,V>> |
entrySet()
返回一个
Set 视图的映射包含在这个Map。
|
boolean |
equals(Object o)
将指定的对象与此映射的相等性进行比较。
|
V |
get(Object key)
返回指定的键映射的值,或
null 如果这个Map不包含的键映射。
|
int |
hashCode()
返回此映射的哈希代码值。
|
Set<K> |
keySet()
返回一个
Set 的关键视图包含在这个Map。
|
V |
put(K key, V value)
将指定的值与此映射中的指定键关联。
|
void |
putAll(Map<? extends K,? extends V> m)
从指定的映射到该Map的所有映射。
|
V |
remove(Object key)
如果存在的话,从这个映射中移除这个键的映射。
|
int |
size()
返回这个映射中的键值映射的数目。
|
Collection<V> |
values()
返回一个
Collection 的价值观包含在这个Map。
|
isEmpty, toString
finalize, getClass, notify, notifyAll, wait, wait, wait
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
public EnumMap(类<K> keyType)
keyType
-该枚举类型的类对象图的关键
NullPointerException
-如果
keyType是空的
public EnumMap(EnumMap<K,? extends V> m)
m
-从初始化这个枚举枚举MapMap
NullPointerException
-如果
m是空的
public EnumMap(Map<K,? extends V> m)
EnumMap(EnumMap)
。否则,指定的Map必须包含至少一个映射(为了确定新的枚举映射的键类型)。
m
-从初始化这个枚举的Map
IllegalArgumentException
-如果
m不是
EnumMap实例不包含映射
NullPointerException
-如果
m是空的
public int size()
public boolean containsValue(Object value)
containsValue
接口
Map<K extends Enum<K>,V>
containsValue
方法重写,继承类
AbstractMap<K extends Enum<K>,V>
value
-其在Map上的存在是被测试的价值
public boolean containsKey(Object key)
containsKey
接口
Map<K extends Enum<K>,V>
containsKey
方法重写,继承类
AbstractMap<K extends Enum<K>,V>
key
-关键的在这个Map的存在是进行测试
public V get(Object key)
null
如果这个Map不包含的键映射。
更正式地说,如果这个图中包含了从关键k
到价值v
这样(key == k)
映射,那么这个方法返回v
;否则返回null
。(最多可以有一个这样的映射。)
一个null
返回值不必要地表明Map不包含的键映射;也有可能是Map明确地映射到null
的关键,containsKey
操作可用于区分这两例。
public void putAll(Map<? extends K,? extends V> m)
public void clear()
public Set<K> keySet()
Set
的关键视图包含在这个Map。返回的集合服从总承包
Map.keySet()
概述。集合的迭代器将在他们的自然顺序返回键(即枚举常量的声明顺序)。
public Collection<V> values()
Collection
的价值观包含在这个Map。返回的集合服从总承包
Map.values()
概述。集合的迭代器返回的值的顺序对应的键出现在Map,这是他们的自然秩序(即枚举常量的声明顺序)。
public Set<Map.Entry<K,V>> entrySet()
Set
视图的映射包含在这个Map。返回的集合服从总承包
Map.keySet()
概述。集合的迭代器返回的顺序钥匙出现在Map的映射,这是他们的自然秩序(即枚举常量的声明顺序)。
public boolean equals(Object o)
Map.equals(Object)
。
public int hashCode()
hashCode
接口
Map<K extends Enum<K>,V>
hashCode
方法重写,继承类
AbstractMap<K extends Enum<K>,V>
Map.Entry.hashCode()
,
Object.equals(Object)
,
Set.equals(Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.