Java枚举映射示例
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