- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- java.util.EnumMap<K,V>
-
- All Implemented Interfaces:
-
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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
视图。-
Methods inherited from class java.util.AbstractMap
isEmpty, toString
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, entry, forEach, getOrDefault, merge, of, of, of, of, of, of, of, of, of, of, of, ofEntries, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
构造方法详细信息
-
EnumMap
public EnumMap(Class<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
实例,并且不包含映射 -
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
的映射,k
该值为(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)
-
-