Java EnumMap 类



引言

Java EnumMap 类是专用的映射实现,用于使用枚举键。以下是有关 EnumMap 的重要要点 -

  • 枚举映射中的所有键都必须来自创建映射时明确或隐式指定的单个枚举类型。

  • 枚举映射按其键的自然顺序维护。

  • EnumMap 没有进行同步。如果多个线程并发访问枚举映射,并且至少有一个线程修改了映射,则应从外部对其进行同步。

类声明

以下是java.util.EnumMap 类的声明 -

public class EnumMap<K extends Enum<K>,V>
   extends AbstractMap<K,V>
   implements Serializable, Cloneable

类构造函数

序号 构造函数和说明
1

EnumMap(Class<K> keyType)

此构造函数创建一个具有指定键类型的空枚举映射。

2

EnumMap(EnumMap<K,? extends V> m)

此构造函数创建一个具有与指定的枚举映射相同的键类型的枚举映射,最初包含相同的映射(如果存在)。

3

EnumMap(Map<K,? extends V> m)

此构造函数创建一个从指定映射初始化的枚举映射。

类方法

序号 方法与说明
1 void clear()

此方法从此映射中删除所有映射。

2 EnumMap<K,V> clone()

此方法返回此枚举映射的浅副本。

3 boolean containsKey(Object key)

如果此映射包含指定键的映射,则此方法返回 true。

4 boolean containsValue(Object value)

如果此映射将一个或多个键映射到指定值,则此方法返回 true。

5 Set<Map.Entry<K,V>> entrySet()

此方法返回此映射中包含的映射的 Set 视图。

6 boolean equals(Object o)

此方法将指定对象与此映射进行比较以获得相等性。

7 V get(Object key)

此方法返回指定键被映射到的值,如果此映射不包含键的映射,则返回 null。

8 int hashCode()

此方法为此映射返回哈希代码值。

9 Set<K> keySet()

此方法返回此映射中包含的键的 Set 视图。

10 V put(K key, V value)

此方法将指定值与该映射中的指定键关联。

11 void putAll(Map<? extends K,? extends V> m)

此方法将指定映射中的所有映射复制到此映射。

12 V remove(Object key)

如果存在,此方法从该映射中删除此键的映射。

13 int size()

此方法返回该映射中的键值映射数。

14 Collection<V> values()

此方法返回此映射中包含的值的 Collection 视图。

继承的方法

此类继承以下类的类方法 −

  • java.util.AbstractMap
  • java.util.Object

向 EnumMap 添加 Enum、Integer 对示例

以下示例展示了 Java EnumMap put(K,V) 方法用于在 EnumMap 实例中放入值。我们创建了一个枚举 Numbers。然后使用枚举 numbers 和整数创建 EnumMap。使用 put(K,V) 添加了几个条目并打印了 enumMap。再次使用 put() 方法,替换了 enumMap 的一个值并再次打印了映射。

package com.tutorialspoint;

import java.util.EnumMap;

public class EnumMapDemo {
   
   // create an enum
   public enum Numbers{ONE, TWO, THREE, FOUR, FIVE}; 

   public static void main(String[] args) {
      
      EnumMap<Numbers,Integer> map = 
         new EnumMap<>(Numbers.class);

      // associate values in map
      map.put(Numbers.ONE, 1);
      map.put(Numbers.TWO, 2);
      map.put(Numbers.THREE,3);

      // print the whole map
      System.out.println(map); 

      map.put(Numbers.THREE, 4);
	  
      // print the updated map
      System.out.println(map);
   }
}

让我们编译并运行上述程序,它会生成以下结果 −

{ONE=1, TWO=2, THREE=3}
{ONE=1, TWO=2, THREE=4}
广告