原文: https://javatutorial.net/java-enummap-example

EnumMap类实现Map类,并允许使用枚举类型的键。 枚举映射按其键的自然顺序进行维护。 重要的是要注意不允许使用空键。 如果尝试添加空键,则将抛出NullPointerException

Java `EnumMap`示例 - 图1

但是,即使不允许null键,也允许null值。 由于所有可能的密钥都是预先已知的,因此可以更快地进行哈希计算。

  • EnumMap不同步。
  • EnumMapHashMap快得多

EnumMap

Java `EnumMap`示例 - 图2

EnumMap继承图

EnumMap中的构造方法

  1. EnumMap(Class<K> keyType):使用指定的密钥类型创建一个空的枚举映射。
  2. EnumMap(EnumMap<K, ? extends V> m):创建一个与指定枚举图具有相同键类型的枚举图,最初包含相同的映射(如果有)。
  3. EnumMap(Map<K, ? extends V> m):创建一个从指定映射初始化的枚举映射。

EnumMap中的方法

  1. void clear():从此映射中删除所有映射。
  2. EnumMap<K, V> clone():返回一个EnumMap,它表示另一个副本。
  3. boolean containsKey(Object key):如果当前映射包含指定的键,则返回 true,否则返回 false。
  4. boolean containsValue(Object value):如果当前映射包含指定值,则返回 true,否则返回 false。
  5. boolean equals(Object o):比较指定对象与当前映射是否相等。
  6. V get(Object key):返回指定键所映射到的值;如果键不包含任何值,则返回 null。
  7. int hashCode():返回当前地图的哈希码。
  8. V put(K key, V value):将指定的值映射到指定的键。
  9. V remove(Object key):从地图上移除指定的键。
  10. int size():返回地图中的对数。

有关所有方法的文档,请访问 Oracle 官方文档页面

一个程序中某些方法的示例

  1. import java.util.EnumMap;
  2. public class EnumMapExample
  3. {
  4. public enum Hardware
  5. {
  6. MONITOR, MOUSE, KEYBOARD;
  7. }
  8. public static void main(String args[])
  9. {
  10. EnumMap<Hardware, String> hardwareMapInstance = new EnumMap<Hardware, String>(Hardware.class);
  11. /* hardwareMapInstance is empty. Let's populate it. */
  12. hardwareMapInstance.put(Hardware.MONITOR, "Samsung");
  13. hardwareMapInstance.put(Hardware.MOUSE, "Logitech g403");
  14. hardwareMapInstance.put(Hardware.KEYBOARD, "Razer");
  15. /* After having put items, let's see the map size. */
  16. System.out.println("Size: " + hardwareMapInstance.size()); // we could use .size() to loop through an enummap
  17. /* This would print the EnumMap in natural order. (MONITOR => MOUSE => KEYBOARD) */
  18. System.out.println("EnumMap: " + hardwareMapInstance);
  19. /* Getting a specific value from an EnumMap. */
  20. System.out.println("Key: " + Hardware.MONITOR +" Value: " + hardwareMapInstance.get(Hardware.MONITOR));
  21. /* Checking if the EnumMap contains a particular key. */
  22. System.out.println("Does Hardware has " + Hardware.MOUSE + ": " + hardwareMapInstance.containsKey(Hardware.MOUSE));
  23. /* Checking if EnumMap contains a particular value */
  24. System.out.println("Does Hardware has " + Hardware.KEYBOARD + " : " + hardwareMapInstance.containsValue("Razer"));
  25. /* Let's clear the EnumMap */
  26. System.out.println("Clearing the map...");
  27. hardwareMapInstance.clear();
  28. /* Let's get the size now again */
  29. System.out.println("The size after clear() is: " + hardwareMapInstance.size());
  30. }
  31. }

输出

  1. Size: 3
  2. EnumMap: {MONITOR=Samsung, MOUSE=Logitech g403, KEYBOARD=Razer}
  3. Key: MONITOR Value: Samsung
  4. Does Hardware has MOUSE: true
  5. Does Hardware has KEYBOARD : true
  6. Clearing the map...
  7. The size after clear() is: 0