Java枚举映射示例

时间:2020-02-23 14:37:07  来源:igfitidea点击:

EnumMap类实现Map类并启用enum类型键。枚举映射按其键的自然顺序维护。请注意,不允许使用null键。如果尝试添加null键,则将引发NullPointerException

但是,即使不允许使用null键,null值也是允许的。因为所有可能的密钥都是预先知道的,所以更快的哈希计算是可能的。

EnumMap未同步。

HashMap比EnumHashMap快得多

EnumMap中的构造函数

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

枚举映射(EnumMap<K?extends V>m):创建一个与指定枚举映射具有相同键类型的枚举映射,最初包含相同的映射(如果有的话)。

枚举映射(Map<K?extends V>m):创建从指定映射初始化的枚举映射。

DeEnumMap中的方法

  • void clear():删除此映射中的所有映射。

  • EnumMap<K,V>clone():返回表示另一个副本的EnumMap。

  • boolean containsKey(Object key):如果当前映射包含指定的键,则返回true,否则返回false。

  • boolean containsValue(Object value):如果当前映射包含指定的值,则返回true,否则返回false。

  • boolean equals(Object o):比较指定对象与当前映射的相等性。

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

  • int hashCode():返回当前映射的哈希代码。

  • V put(K键,V值):将指定值映射到指定键。

  • V remove(Object key):从映射中移除指定的键。

  • int size():返回映射中的对数。

有关所有方法的文档,可以访问Oracle官方文档页。

一个程序中一些方法的例子

import java.util.EnumMap; 

public class EnumMapExample
{ 
  public enum Hardware 
  { 
      MONITOR, MOUSE, KEYBOARD;
  } 

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

      /* hardwareMapInstance is empty. Let's populate it. */

      hardwareMapInstance.put(Hardware.MONITOR, "Samsung"); 
      hardwareMapInstance.put(Hardware.MOUSE, "Logitech g403"); 
      hardwareMapInstance.put(Hardware.KEYBOARD, "Razer"); 

      /* After having put items, let's see the map size. */
      System.out.println("Size: " + hardwareMapInstance.size()); //we could use .size() to loop through an enummap

      /* This would print the EnumMap in natural order. (MONITOR => MOUSE => KEYBOARD) */
      System.out.println("EnumMap: " + hardwareMapInstance); 

      /* Getting a specific value from an EnumMap. */
      System.out.println("Key: " + Hardware.MONITOR +" Value: " + hardwareMapInstance.get(Hardware.MONITOR)); 

      /* Checking if the EnumMap contains a particular key. */
      System.out.println("Does Hardware has " + Hardware.MOUSE + ": " + hardwareMapInstance.containsKey(Hardware.MOUSE)); 

      /* Checking if EnumMap contains a particular value */
      System.out.println("Does Hardware has " + Hardware.KEYBOARD + " : " + hardwareMapInstance.containsValue("Razer")); 

      /* Let's clear the EnumMap */
      System.out.println("Clearing the map...");
      hardwareMapInstance.clear();

      /* Let's get the size now again */
      System.out.println("The size after clear() is: " + hardwareMapInstance.size());
  } 
}

输出

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