所有类


java.util
类 EnumMap<K extends Enum<K>,V>

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,也不一定显示在迭代进行时发生的任何映射修改的效果。

不允许使用 null 键。试图插入 null 键将抛出 NullPointerException。但是,试图测试是否出现 null 键或移除 null 键将不会抛出异常。允许使用 null 值。

像大多数集合一样,EnumMap 是不同步的。如果多个线程同时访问一个枚举映射,并且至少有一个线程修改该映射,则此枚举映射在外部应该是同步的。这一般通过对自然封装该枚举映射的某个对象进行同步来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap(java.util.Map ) 方法来“包装”该枚举。最好在创建时完成这一操作,以防止意外的非同步访问:

     Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap(...));
 

实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashMap 副本更快。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.5
另请参见:
EnumSet, 序列化表格

嵌套类摘要
 
从接口 java.util.Map 继承的嵌套类/接口
Map.Entry<K,V>
 
构造方法摘要
EnumMap(Class<K> keyType)
          创建一个具有指定键类型的空枚举映射。
EnumMap(EnumMap<K,? extends V> m)
          创建一个其键类型与指定枚举映射相同的枚举映射,最初包含相同的映射关系(如果有的话)。
EnumMap(Map<K,? extends V> m)
          创建一个枚举映射,从指定映射对其初始化。
 
方法摘要
 voidclear()
          从此映射中移除所有映射关系。
 EnumMap<K,V>clone()
          返回此枚举映射的浅表复制。
 booleancontainsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true
 booleancontainsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true
 Set<Map.Entry<K,V>>entrySet()
          返回此映射中所包含映射关系的 Set 视图。
 booleanequals(Object o)
          比较指定对象与此映射的相等性。
 Vget(Object key)
          返回此映射将指定键映射到的值,如果此映射不包含指定键的映射关系,则返回 null。
 Set<K>keySet()
          返回此映射中所包含键的 Set 视图。
 Vput(K key, V value)
          将指定值与此映射中指定键关联。
 voidputAll(Map<? extends K,? extends V> m)
          将指定映射中所有映射关系复制到此映射中。
 Vremove(Object key)
          从此映射中移除该键的映射关系(如果存在)。
 intsize()
          返回此映射中的键-值映射关系数。
 Collection<V>values()
          返回此映射中所包含值的 Collection 视图。
 
从类 java.util.AbstractMap 继承的方法
hashCode, isEmpty, toString
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

EnumMap

public EnumMap(Class<K> keyType)
创建一个具有指定键类型的空枚举映射。

参数:
keyType - 此枚举映射的键类型的 class 对象
抛出:
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()
返回此映射中的键-值映射关系数。

指定者:
接口 Map<K extends Enum<K>,V> 中的 size
覆盖:
AbstractMap<K extends Enum<K>,V> 中的 size
返回:
此映射中的键-值映射关系数。

containsValue

public boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true

指定者:
接口 Map<K extends Enum<K>,V> 中的 containsValue
覆盖:
AbstractMap<K extends Enum<K>,V> 中的 containsValue
参数:
value - 将要在此映射中测试其是否存在的值
返回:
如果此映射将一个或多个键映射到此值,则返回 true

containsKey

public boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true

指定者:
接口 Map<K extends Enum<K>,V> 中的 containsKey
覆盖:
AbstractMap<K extends Enum<K>,V> 中的 containsKey
参数:
key - 将要在此映射中测试其是否存在的键
返回:
如果此映射包含指定键的映射关系,则返回 true

get

public V get(Object key)
返回此映射将指定键映射到的值,如果此映射不包含指定键的映射关系,则返回 null。

指定者:
接口 Map<K extends Enum<K>,V> 中的 get
覆盖:
AbstractMap<K extends Enum<K>,V> 中的 get
参数:
key - 与其关联的值将要返回的键
返回:
此映射要将指定键映射到的值,如果此映射不包含指定键的映射关系,则返回 null
另请参见:
AbstractMap.containsKey(Object)

put

public V put(K key,
             V value)
将指定值与此映射中指定键关联。如果该映射以前包含此键的映射关系,则将原值替换。

指定者:
接口 Map<K extends Enum<K>,V> 中的 put
覆盖:
AbstractMap<K extends Enum<K>,V> 中的 put
参数:
key - 指定值与其关联的键
value - 与指定键关联的值
返回:
与指定键关联的旧值,如果不存在该键的映射关系,则返回 null。(返回 null 还可能表明以前该映射将 null 与指定键关联。)
抛出:
NullPointerException - 如果指定键为 null