模块  java.base
软件包  java.util

Class EnumMap<K extends Enum<K>,​V>

  • 实现的所有接口
    SerializableCloneableMap<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
    另请参见:
    EnumSetSerialized Form
    • 构造方法详细信息

      • 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()
        返回此映射中键 - 值映射的数量。
        Specified by:
        size在界面 Map<K extends Enum<K>,​V>
        重写:
        sizeAbstractMap<K extends Enum<K>,​V>
        结果
        此映射中键 - 值映射的数量
      • 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操作来区分这两种情况。

        Specified by:
        get在界面 Map<K extends Enum<K>,​V>
        重写:
        getAbstractMap<K extends Enum<K>,​V>
        参数
        key - 要返回其关联值的密钥
        结果
        指定键映射到的值,如果此映射不包含键的映射, null
      • put

        public V put​(K key,             V value)
        将指定的值与此映射中的指定键相关联。 如果映射先前包含此键的映射,则替换旧值。
        Specified by:
        put在界面 Map<K extends Enum<K>,​V>
        重写:
        put在类 AbstractMap<K extends Enum<K>,​V>
        参数
        key - 与指定值关联的键
        value - 与指定键关联的值
        结果
        与指定键关联的先前值,如果没有键映射, null (A null返回也可以指示先前与指定键关联的地图null
        异常
        NullPointerException - 如果指定的键为空
      • remove

        public V remove​(Object key)
        从此映射中删除此键的映射(如果存在)。
        Specified by:
        remove在界面 Map<K extends Enum<K>,​V>
        重写:
        removeAbstractMap<K extends Enum<K>,​V>
        参数
        key - 要从地图中删除其映射的密钥
        结果
        与指定密钥关联的先前值,如果没有密钥条目, null (A null返回也可以指示先前与指定键关联的地图null
      • putAll

        public void putAll​(Map<? extends K,​? extends V> m)
        将指定映射中的所有映射复制到此映射。 这些映射将替换此映射对当前位于指定映射中的任何键的任何映射。
        Specified by:
        putAll在界面 Map<K extends Enum<K>,​V>
        重写:
        putAll在类 AbstractMap<K extends Enum<K>,​V>
        参数
        m - 要存储在此映射中的映射
        异常
        NullPointerException - 指定的映射为null,或者指定映射中的一个或多个键为空
      • keySet

        public Set<K> keySet()
        返回此映射中包含的键的Set视图。 返回的集合服从Map.keySet()概述的一般合同。 set的迭代器将按其自然顺序(枚举常量声明的顺序)返回键。
        Specified by:
        keySet在界面 Map<K extends Enum<K>,​V>
        重写:
        keySet在类 AbstractMap<K extends Enum<K>,​V>
        结果
        此枚举映射中包含的键的设置视图
      • values

        public Collection<V> values()
        返回此映射中包含的值的Collection视图。 退回的集合服从Map.values()概述的一般合同。 集合的迭代器将按照其对应键在map中出现的顺序返回值,这是它们的自然顺序(枚举常量声明的顺序)。
        Specified by:
        values在界面 Map<K extends Enum<K>,​V>
        重写:
        valuesAbstractMap<K extends Enum<K>,​V>
        结果
        此映射中包含的值的集合视图
      • entrySet

        public Set<Map.Entry<K,​V>> entrySet()
        返回此映射中包含的映射的Set视图。 退回的集合服从Map.keySet()概述的一般合同。 set的迭代器将按照它们的键出现在map中的顺序返回映射,这是它们的自然顺序(枚举常量声明的顺序)。
        Specified by:
        entrySet在界面 Map<K extends Enum<K>,​V>
        结果
        此枚举映射中包含的映射的set视图
      • equals

        public boolean equals​(Object o)
        将指定对象与此映射进行比较以获得相等性。 如果给定对象也是一个映射,则返回true ,并且两个映射表示相同的映射,如Map.equals(Object)合同中所指定。
        Specified by:
        equals在界面 Map<K extends Enum<K>,​V>
        重写:
        equals在类 AbstractMap<K extends Enum<K>,​V>
        参数
        o - 要与此映射进行相等性比较的对象
        结果
        true如果指定的对象等于此映射
        另请参见:
        Object.hashCode()HashMap
      • clone

        public EnumMap<K,​V> clone()
        返回此枚举映射的浅表副本。 值本身不会被克隆。
        重写:
        cloneAbstractMap<K extends Enum<K>,​V>
        结果
        这个枚举映射的浅表副本
        另请参见:
        Cloneable