java.util.EnumMap类是用于枚举键的专用Map实现。以下是关于EnumMap的要点-
枚举映射中的所有键都必须来自创建映射时显式或隐式指定的单个枚举类型。
枚举映射按其键的自然顺序维护。
EnumMap不同步。如果多个线程同时访问一个枚举映射,并且至少有一个线程修改了该映射,则应在外部进行同步。
以下是EnumMap类的构造函数-
| 序号 | 构造函数与说明 |
|---|---|
| 1个 | EnumMap(Class<K> keyType) |
| 2 | EnumMap(EnumMap <K,?extended V> m) 此构造函数创建一个枚举映射,其键类型与指定的枚举映射相同,并且最初包含相同的映射(如果有)。 |
| 3 | EnumMap(Map <K,?extended V> m) 此构造函数创建一个从指定映射表初始化的枚举映射表。 |
让我们看一个例子-
import java.util.EnumMap;
public class Demo {
// create an enum
public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
};
public static void main(String[] args) {
EnumMap<Numbers, String> map1 = new EnumMap<Numbers, String>(Numbers.class);
EnumMap<Numbers, String> map2 = new EnumMap<Numbers, String>(Numbers.class);
// associate values in map1
map1.put(Numbers.ONE, "1");
map1.put(Numbers.TWO, "2");
map1.put(Numbers.THREE, "3");
map1.put(Numbers.FOUR, "4");
// print the whole map
System.out.println("map1:" + map1);
// clone map1 to map2
map2 = map1.clone();
// print map2
System.out.println("map2:" + map2);
}
}输出结果
map1:{ONE=1, TWO=2, THREE=3, FOUR=4}
map2:{ONE=1, TWO=2, THREE=3, FOUR=4}让我们看看另一个示例,其中我们在Map中显示键-值映射的计数-
import java.util.*;
public class EnumMapDemo {
// create an enum
public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
};
public static void main(String[] args) {
EnumMap<Numbers, String> map = new EnumMap<Numbers, String>(Numbers.class);
// assosiate values in map
map.put(Numbers.ONE, "1");
map.put(Numbers.TWO, "2");
map.put(Numbers.THREE, "3");
map.put(Numbers.FOUR, "4");
// print the map
System.out.println("Map: " + map);
// print the number of mappings of this map
System.out.println("Number of mappings:" + map.size());
// remove value from Numbers.THREE
map.put(Numbers.FIVE, "5");
// print the new number of mappings of this map
System.out.println("Number of mappings:" + map.size());
}
}输出结果
Map: {ONE=1, TWO=2, THREE=3, FOUR=4}
Number of mappings:4
Number of mappings:5