The java.util.EnumMap class is a specialized Map implementation for use with enum keys. Following are the important points about EnumMap −
All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is created.
Enum maps are maintained in the natural order of their keys.
EnumMap is not synchronized. If multiple threads access an enum map concurrently, and at least one of the threads modifies the map, it should be synchronized externally.
Following are the constructors of the EnumMap class −
Sr.No | Constructor & Description |
---|---|
1 | EnumMap(Class<K> keyType) This constructor creates an empty enum map with the specified key type. |
2 | EnumMap(EnumMap<K,? extends V> m) This constructor creates an enum map with the same key type as the specified enum map, initially containing the same mappings (if any). |
3 | EnumMap(Map<K,? extends V> m) This constructor creates an enum map initialized from the specified map. |
Example
Let us see an example −
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); } }
Output
map1:{ONE=1, TWO=2, THREE=3, FOUR=4} map2:{ONE=1, TWO=2, THREE=3, FOUR=4}
Example
Let us see another example wherein we are displaying the count of key-value mappings in the 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()); } }
Output
Map: {ONE=1, TWO=2, THREE=3, FOUR=4} Number of mappings:4 Number of mappings:5