EnumMap class in Java


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.NoConstructor & Description
1EnumMap(Class<K> keyType)
This constructor creates an empty enum map with the specified key type.
2EnumMap(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).
3EnumMap(Map<K,? extends V> m)
This constructor creates an enum map initialized from the specified map.

Example

Let us see an example −

 Live Demo

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 −

 Live Demo

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

Updated on: 26-Sep-2019

114 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements