Open In App

Difference Between EnumMap and EnumSet in Java

Last Updated : 23 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

EnumMap and EnumSet both are the classes defined inside the java collection. In this article, we will learn the differences between EnumMap and EnumSet. EnumMap is the specialized implementation of the Map interface and the EnumSet is the specialized implementation of the Set interface. There are some differences that exist between them. So we have tried to list out the differences between EnumMap and EnumSet.

1. EnumMap: EnumMap is a specialized implementation of the Map interface for enumeration types. It implements the Map interface and extends AbstractMap in Java.

  • EnumMap is much faster than HashMap.
  • EnumMap class is a member of the Java Collections Framework.
  • EnumMap is an ordered collection maintained in the natural order of their keys.
  • All keys of each EnumMap instance must be keys of the same enum type.
  • EnumMap doesn’t allow inserting a null key if we try to insert the null key, it will throw NullPointerException.
  • EnumMap internally represented as arrays for better performance.

Below is the implementation of the EnumMap:

Java




// Java program to illustrate working of EnumMap
 
import java.util.*;
 
class EnumMapExample {
 
    public enum Fruits {
        Apple,
        Mango,
        Orange,
        Banana;
    }
 
    public static void main(String[] args)
    {
        // Creating an EnumMap of the Fruits enum
        EnumMap<Fruits, Integer> enumMap
            = new EnumMap<>(Fruits.class);
 
        // Insert using put() method
        enumMap.put(Fruits.Apple, 1);
        enumMap.put(Fruits.Mango, 2);
        enumMap.put(Fruits.Orange, 3);
        enumMap.put(Fruits.Banana, 4);
 
        // Printing size of EnumMap
        System.out.println("Size of EnumMap: "
                           + enumMap.size());
        // Printing the EnumMap
        for (Map.Entry m : enumMap.entrySet()) {
            System.out.println(m.getKey() + " "
                               + m.getValue());
        }
    }
}


Output

Size of EnumMap: 4
Apple 1
Mango 2
Orange 3
Banana 4

2. EnumSet: EnumSet is a specialized implementation of the Set interface for enumeration types. It implements the Set interface and extends AbstractSet in Java. 

  • EnumSet class is a member of the Java Collections Framework and it is not synchronized.
  • All the elements in an EnumSet must come from a single enumeration type that is specified when the set is created either explicitly or implicitly.
  • EnumSet is much faster than HashSet.
  • EnumSet doesn’t allow inserting null object if we try to insert the null object, it will throw NullPointerException.

Below is the implementation of the EnumSet:

Java




// Java program to demonstrate the EnumSet
 
import java.util.*;
class enumSetExample {
    enum Days {
        Sunday,
        Monday,
        Tuesday,
        Wednesday,
        Thursday
    }
    public static void main(String args[])
    {
 
        // Creating an EnumSet
        EnumSet<Days> days
            = EnumSet.of(Days.Monday, Days.Tuesday);
 
        Iterator<Days> itr = days.iterator();
 
        // Iterate and print elements
        // to the console
        System.out.println("EnumSet : ");
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}


Output

EnumSet : 
Monday
Tuesday

Difference between EnumMap and EnumSet

                                 EnumMap                              EnumSet
EnumMap is a specialized implementation of the Map interface for the enumeration types. EnumSet is a specialized implementation of the Set interface for the enumeration types.
EnumMap is internally represented as an array. EnumSet is internally represented as a BitVector.
EnumMap doesn’t allow to insert the null keys, however, null values can be inserted. EnumSet doesn’t allow inserting null elements.
EnumMap is not an abstract class. EnumSet is an abstract class.
EnumMap is not an abstract class therefore, we can create an instance of this class. EnumSet is an abstract class therefore, we can not create the instance of this class.


Similar Reads

Difference Between EnumSet and TreeSet in Java
EnumSet and TreeSet both are the classes defined inside the collection framework. But there are few differences exists between them. In this article, we have tried to cover all these differences between them. 1. EnumSet: EnumSet is a specialized implementation of the Set interface for enumeration types. It extends AbstractSet and implements the Set
3 min read
Difference Between IdentityHashMap, WeakHashMap, and EnumMap in Java
The IdentityHashMap, WeakHashMap, and EnumMap all are the classes in java collection that implements the Map interface. But there are few differences exists between them. 1. IdentityHashMap: The IdentityHashMap implements the Map interface. It follows reference-equality in place of object-equality when comparing keys (and values). This class is use
5 min read
EnumSet of() Method in Java
The java.util.EnumSet.of(E ele1, E ele2, E ele3, ...) method in Java is used to create an enum set initially containing the specified elements in the parameters. When multiple items are added at the same time the elements are pushed down the set as the new elements are added. When different elements are added at different time or iteration, the old
5 min read
EnumSet clone() Method in Java
The Java.util.EnumSet.clone() method in Java is used to return a shallow copy of the existing or this set. Syntax: Enum_Set_2 = Enum_Set_1.clone() Parameters: The method does not take any parameters. Return Value: The method does not return any value. Below programs illustrate the working of Java.util.EnumSet.clone() method: Program 1: // Java prog
2 min read
EnumSet complementOf() Method in Java
The java.util.EnumSet.complementOf(Enum_Set) method is used to create an EnumSet containing elements of the same type as that of the specified Enum_Set, with the values present in the enum but other than those contained in the specified Enum_Set. Syntax: New_Enum_Set = EnumSet.complementOf(Enum_Set) Parameters: The method accepts one parameter Enum
2 min read
EnumSet allof() Method in Java
The Java.util.EnumSet.allOf(Class elementType) in Java is used to create an enum set that will be used to contain all of the elements in the specified elementType. Syntax: public static > EnumSet allOf(Class elementType) Parameters: The method accepts one parameter elementType of element type and refers to the class object whose elements are to be
2 min read
EnumSet copyOf() Method in Java
The java.util.EnumSet.copyOf(Collection collect) method in Java is used to copy all of the contents from a collection to a new enum set. At first, the collection is made out of the elements of the enum and then a new enum set is created, which is the copy of the collection. Syntax: New_Enum_Set = EnumSet.copyOf(Collection collect) Parameters: The m
3 min read
EnumSet noneOf() Method in Java
The java.util.EnumSet.noneOf(Class elementType) method in Java is used to create a null set of the type elementType. Syntax: public static &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; noneOf(Class&lt;E&gt; elementType) Parameters: The method accepts one parameter elementType of element type and refers to the class object of the element type for
2 min read
EnumSet range() Method in Java
The java.util.EnumSet.range(E start_point, E end_point) method in Java is used to create an enum set with the elements defined by the specified range in the parameters. Syntax: Enum_set = EnumSet.range(E start_point, E end_point) Parameters: The method accepts two parameters of the object type of enum: start_point: This refers to the starting eleme
2 min read
EnumSet in Java
Enumerations or popularly known as enum serve the purpose of representing a group of named constants in a programming language. For example, the 4 suits in a deck of playing cards may be 4 enumerators named Club, Diamond, Heart, and Spade, belonging to an enumerated type named Suit. The EnumSet is one of the specialized implementations of the Set i
9 min read