Module  java.base
软件包  java.util

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

  • All Implemented Interfaces:
    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​(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​()
        返回此地图中键值映射的数量。
        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>
        重写:
        containsKeyAbstractMap<K extends Enum<K>,V>
        参数
        key - 要在此地图中存在的密钥要进行测试
        结果
        true如果此映射包含指定键的映射
      • get

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

        更正式地,如果该映射包含从k键到值v的映射, k该值为(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>
        重写:
        putAllAbstractMap<K extends Enum<K>,V>
        参数
        m - 要存储在此地图中的映射
        异常
        NullPointerException - 指定的映射为空,或指定映射中的一个或多个键为空
      • keySet

        public Set<K> keySet​()
        返回此地图中包含的键的Set视图。 返回的集合符合Map.keySet()概述的总体合同。 集合的迭代器将以自然顺序返回键(枚举常量的声明顺序)。
        Specified by:
        keySet在接口 Map<K extends Enum<K>,V>
        重写:
        keySetAbstractMap<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()概述的总体合同。 集合的迭代器将按照它们的键在映射中显示的顺序返回映射,这是它们的自然顺序(枚举常量被声明的顺序)。
        Specified by:
        entrySet在接口 Map<K extends Enum<K>,V>
        Specified by:
        entrySetAbstractMap<K extends Enum<K>,V>
        结果
        该枚举地图中包含的映射的集合视图
      • equals

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

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