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