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> -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidclear()从此map中删除所有映射。clone()返回此枚举map的浅表副本。booleancontainsKey(Object key) 如果此map包含指定键的映射,则返回true。booleancontainsValue(Object value) 如果此map将一个或多个键映射到指定值,则返回true。entrySet()返回此map中包含的映射的Set视图。boolean比较指定对象与此map是否相等。返回指定键映射到的值,如果此map不包含键的映射,则返回null。inthashCode()返回此map的哈希码值。keySet()返回此map中包含的键的Set视图。将指定值与此map中的指定键相关联。void将指定map中的所有值复制到此map。从此map中删除此键的映射(如果存在)。intsize()返回此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的浅表副本。值本身不会被克隆。
-