Read Also: Difference between EnumMap and HashMap in Java
Difference between EnumMap and EnumSet in Java
1. Internal representation :EnumMap internally represented as arrays.EnumSet internally represented as BitVector.2. Permits Null : In EnumMap null keys are not permitted, however, null values are permitted.
In EnumSet null elements are not permitted.
3. Abstract class : EnumMap is not an abstract class. While, EnumSet is an abstract class.
4. Instantiation : Since EnumMap is not an abstract class, it can be instantiated using new operator. You can not directly create instances of EnumSet as it is an abstract class. EnumSet does not have any constructor.
5. Implementation : EnumMap is a specialized Map implementation for use with enum type keys.
EnumSet is a specialized Set implementation for use with enum types.
Examples of EnumMap and EnumSet
Below are the examples of EnumMap and EnumSet. First look at the example of EnumSetimport java.util.EnumSet;
public class EnumSetExample {
enum Direction
{
NORTH, SOUTH, EAST, WEST;
};
public static void main(String args[]) {
// of() Method Example : Creates an EnumSet initially
// containing the specified elements
EnumSet<Direction> set1 =
EnumSet.of(Direction.NORTH,Direction.SOUTH);
System.out.println("of() Example "+ set1);
// allOf Method Example : creates an EnumSet
// containing all the elements
EnumSet<Direction> set2 = EnumSet.allOf(Direction.class);
System.out.println("allOf() Example "+ set2);
// noneOf Method Example : creates an empty EnumSet
EnumSet<Direction> set3 = EnumSet.noneOf(Direction.class);
System.out.println("noneOf() Example "+ set3);
// complementOf Method Example : creates an
// EnumSet not contained in the specified set
EnumSet<Direction> set4 = EnumSet.complementOf(set1);
System.out.println("complementOf() Example "+ set4);
// range Method Example : creates an EnumSet
// containing all the elements in the range
EnumSet<Direction> set5 =
EnumSet.range(Direction.SOUTH,Direction.WEST);
System.out.println("range() Example "+ set5);
}
}
Output :
of() Example [NORTH, SOUTH]
allOf() Example [NORTH, SOUTH, EAST, WEST]
noneOf() Example []
complementOf() Example [EAST, WEST]
range() Example [SOUTH, EAST, WEST]
Now, look at the example of EnumMap
import java.util.EnumMap;
public class JavaHungry
{
public enum Fruit
{
BANANA, APPLE, ORANGE, MANGO;
}
public static void main(String args[])
{
// Java EnumMap Example
// Creating EnumMap in java with key
// as enum type STATE
EnumMap<Fruit, String> fruitMap = new
EnumMap<Fruit, String>(Fruit.class);
// Java EnumMap Another Example:
// Putting values inside EnumMap in Java
// Inserting Enum keys different from
// their natural order
fruitMap.put(Fruit.ORANGE, "Orange is delicious");
fruitMap.put(Fruit.APPLE, "Apple is delicious");
fruitMap.put(Fruit.MANGO, "Mango is delicious");
fruitMap.put(Fruit.BANANA, "Banana is delicious");
// Displaying size of EnumMap in java
System.out.println("Size of EnumMap : " +
fruitMap.size());
// Printing Java EnumMap
// Print EnumMap in natural order
// of enum keys (order on which they are declared)
System.out.println("EnumMap : " + fruitMap);
// Fetch value from EnumMap in java
System.out.println("Key : " + Fruit.MANGO +" Value: "
+ fruitMap.get(Fruit.MANGO));
}
}
Output :
Size of EnumMap : 4
EnumMap : {BANANA=Banana is delicious, APPLE=Apple is delicious, ORANGE=Orange is delicious, MANGO=Mango is delicious}
Key : MANGO Value: Mango is delicious
Similarities between EnumMap and EnumSet in Java
1. Both EnumMap and EnumSet execute basic operations in constant time.2. Like most collection implementations, EnumMap and EnumSet are not synchronized.
3. Iterators returned by the collection views(keySet(), entrySet(), and values()) in EnumMap and iterators returned by iterator method in EnumSet both are weakly consistent.They will never throw ConcurrentModificationException.They may or may not show the effects of any modifications to the map(or set) that occur while the iteration is in progress.
4. Both EnumMap and EnumSet were introduced in jdk 1.5 .
5. Both EnumMap and EnumSet are members of Java Collections Framework.
Recap : Difference between EnumMap and EnumSet in Java
EnumMap | EnumSet | |
---|---|---|
Internal Representation | Arrays | Bit Vector |
Permits Null | Null values are permitted | No |
Abstract Class | No | Yes |
Instantiation | Using new operator | Direct instantiation is not possible |
Implementation | Specialized Map implementation | Specialized Set implementation |
In this article I have demonstrated the EnumSet example, EnumMap example, similarities between EnumMap and EnumSet and difference between EnumMap and EnumSet.Please mention in the comments if you have any questions regarding EnumSet and EnumMap. I will be happy to answer.
References :
EnumSet Oracle doc
EnumMap Oracle doc
0 Comments