java.lang.Object
java.util.AbstractMap <K,V>
java.util.EnumMap<K,V>
- 类型参数:
K
- 此map维护的键的枚举类型V
- 映射值的类型
- 所有已实现的接口:
Serializable
,Cloneable
,Map<K,
V>
public class EnumMap<K extends Enum <K>,V> extends AbstractMap <K,V> implements Serializable , Cloneable
用于枚举类型键的专用
Map
实现。枚举map中的所有键必须来自创建map时显式或隐式指定的单个枚举类型。枚举map在内部表示为数组。这种表示非常紧凑和高效。
枚举map保存在自然秩序它们的键(声明枚举常量的顺序)。这反映在集合视图(keySet()
、entrySet()
和 values()
)返回的迭代器中。
集合视图返回的迭代器是弱一致:他们永远不会抛出 ConcurrentModificationException
并且他们可能会或可能不会显示在迭代过程中对map进行的任何修改的影响。
不允许使用空键。尝试插入空键将抛出 NullPointerException
。然而,尝试测试是否存在空键或删除空键将正常运行。允许空值。
像大多数集合实现一样,EnumMap
是不同步的。如果多个线程同时访问一个枚举map,并且至少有一个线程修改了map,则应该在外部进行同步。这通常是通过同步一些自然封装枚举map的对象来实现的。如果不存在这样的对象,则应使用 Collections.synchronizedMap(java.util.Map<K, V>)
方法“包装”map。这最好在创建时完成,以防止意外的不同步访问:
Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
实施注意事项:所有基本操作都在恒定时间内执行。它们很可能(尽管不能保证)比它们的 HashMap
对应物更快。
此类是 Java 集合框架 的成员。
- 自从:
- 1.5
- 参见:
-
内部类总结
在类 java.util.AbstractMap 中声明的嵌套类/接口
AbstractMap.SimpleEntry<K,
V>, AbstractMap.SimpleImmutableEntry<K, V> -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void
clear()
从此map中删除所有映射。clone()
返回此枚举map的浅表副本。boolean
containsKey
(Object key) 如果此map包含指定键的映射,则返回true
。boolean
containsValue
(Object value) 如果此map将一个或多个键映射到指定值,则返回true
。entrySet()
返回此map中包含的映射的Set
视图。boolean
比较指定对象与此map是否相等。返回指定键映射到的值,如果此map不包含键的映射,则返回null
。int
hashCode()
返回此map的哈希码值。keySet()
返回此map中包含的键的Set
视图。将指定值与此map中的指定键相关联。void
将指定map中的所有值复制到此map。从此map中删除此键的映射(如果存在)。int
size()
返回此map中键值映射的数量。values()
返回此map中包含的值的Collection
视图。在类 java.util.AbstractMap 中声明的方法
isEmpty, toString
在接口 java.util.Map 中声明的方法
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
构造方法详细信息
-
EnumMap
创建具有指定键类型的空枚举map。- 参数:
keyType
- 此枚举map的键类型的类对象- 抛出:
NullPointerException
- 如果keyType
为空
-
EnumMap
创建一个与指定枚举map具有相同键类型的枚举map,最初包含相同的映射(如果有)。- 参数:
m
- 从中初始化此枚举map的枚举map- 抛出:
NullPointerException
- 如果m
为空
-
EnumMap
创建从指定map初始化的枚举map。如果指定的map是EnumMap
实例,则此构造函数的行为与EnumMap(EnumMap)
相同。否则,指定的map必须包含至少一个映射(以便确定新枚举map的键类型)。- 参数:
m
- 从中初始化此枚举map的映射- 抛出:
IllegalArgumentException
- 如果m
不是EnumMap
实例并且不包含任何映射NullPointerException
- 如果m
为空
-
-
方法详情
-
size
public int size()返回此map中键值映射的数量。 -
containsValue
如果此map将一个或多个键映射到指定值,则返回true
。- 指定者:
containsValue
在接口Map<K extends Enum<K>,
中V> - 重写:
containsValue
在类AbstractMap<K extends Enum<K>,
中V> - 参数:
value
- 要测试其在此map中是否存在的值- 返回:
true
如果此map将一个或多个键映射到此值
-
containsKey
如果此map包含指定键的映射,则返回true
。- 指定者:
containsKey
在接口Map<K extends Enum<K>,
中V> - 重写:
containsKey
在类AbstractMap<K extends Enum<K>,
中V> - 参数:
key
- 要测试其在此map中是否存在的键- 返回:
true
如果此map包含指定键的映射
-
get
返回指定键映射到的值,如果此map不包含键的映射,则返回null
。更正式地说,如果此map包含从键
k
到值v
的映射,使得(key == k)
,则此方法返回v
;否则返回null
。 (最多可以有一个这样的映射。)null
的返回值不一定指示映射不包含键的映射;map也可能将密钥显式映射到null
。containsKey
操作可用于区分这两种情况。 -
put
将指定值与此map中的指定键相关联。如果map以前包含此键的映射,则旧值将被替换。 -
remove
从此map中删除此键的映射(如果存在)。 -
putAll
将指定map中的所有映射复制到此map。这些映射将替换此map对指定map中当前任何键的任何映射。 -
clear
public void clear()从此map中删除所有映射。 -
keySet
返回此map中包含的键的Set
视图。返回的集合遵守Map.keySet()
中概述的一般合同。该集合的迭代器将按自然顺序(枚举常量声明的顺序)返回键。 -
values
返回此map中包含的值的Collection
视图。返回的集合遵守Map.values()
中概述的一般合同。集合的迭代器将按照它们对应的键在map中出现的顺序返回值,这是它们的自然顺序(声明枚举常量的顺序)。 -
entrySet
返回此map中包含的映射的Set
视图。返回的集合遵守Map.keySet()
中概述的一般合同。集合的迭代器将按照它们的键在map中出现的顺序返回映射,这是它们的自然顺序(声明枚举常量的顺序)。 -
equals
比较指定对象与此map是否相等。如果给定对象也是一个映射并且两个映射表示相同的映射,则返回true
,如Map.equals(Object)
契约中所指定。 -
hashCode
public int hashCode()返回此map的哈希码值。映射的哈希码定义为map中每个条目的哈希码之和。 -
clone
返回此枚举map的浅表副本。值本身不会被克隆。
-