What is an EnumMap in Java?

Maddy - Feb 21 '22 - - Dev Community

Some days ago, I bumped into an error on Intellij. I don't remember specifically what it was. But I remember Intellij suggesting I use an "enumMap".

I knew about the existence of enums, but I wasn't aware of the existence of enumMaps.

So here is an article covering enumMaps, in Java.

What is an EnumMap?

An EnumMap is a special form of a map. A map in Java is an interface that takes a key (K) and a value (V).

In the case of an EnumMap, the key is an enum.

An EnumMap:

  • extends the AbstractMap.

  • implements Map interface.

How to create an EnumMap

To create an enumMap, we have to import the java.util.EnumMap

public class JavaEnumMap {

    enum Colour {
        RED,
        BLUE,
        BLACK,
        GREEN
    }
}
Enter fullscreen mode Exit fullscreen mode

How to add an element into an enumMap

You can use the put() method to insert elements into an enumMap.

    public static void main(String[] args) {

        EnumMap<Colour, Integer> colours = new EnumMap<Colour, Integer>(Colour.class);

        colours.put(Colour.RED, 1);
        colours.put(Colour.BLUE, 2);
        colours.put(Colour.BLACK, 3);
        colours.put(Colour.GREEN, 4);
}
Enter fullscreen mode Exit fullscreen mode

How to access an element on an enumMap

To access the elements of an enumMap, you can use:

keySet()

It prints all the keys on the map

System.out.println("Printing all keys in the map " + colours.keySet());
Enter fullscreen mode Exit fullscreen mode

The result is:

Printing all keys in the map [RED, BLUE, BLACK, GREEN]
Enter fullscreen mode Exit fullscreen mode

entrySet()

It prints the keys and the values in the map

System.out.println("Printing the keys and the values in the map " + colours.entrySet());
Enter fullscreen mode Exit fullscreen mode

The result is:

Printing the keys and the values in the map [RED=1, BLUE=2, BLACK=3, GREEN=4]
Enter fullscreen mode Exit fullscreen mode

values()

It prints the values in the map

System.out.println("Printing the values in the map " + colours.values());
Enter fullscreen mode Exit fullscreen mode

The result is:

Printing the values in the map [1, 2, 3, 4]
Enter fullscreen mode Exit fullscreen mode

How to retrieve elements from an enumMap

You can use the get() method to retrieve elements from an enumMap.

System.out.println("Retrieve the value from the enumMap " + colours.get(Colour.RED));
Enter fullscreen mode Exit fullscreen mode

The result is:

Retrieve the value from the enumMap: 1
Enter fullscreen mode Exit fullscreen mode

How to remove elements from an enumMap

To remove elements from an enumMap you can use:

remove(key)

You use the key of the enumMap to remove an element from an enumMap

System.out.println("Removing the key: " + colours.remove(Colour.GREEN));
Enter fullscreen mode Exit fullscreen mode

The result is:

Removing the key: 4
The enumMap now has: {RED=1, BLUE=2}
Enter fullscreen mode Exit fullscreen mode

*remove(key, value) *

If it exists, it removes the element from the enumMap and returns a boolean value.

System.out.println("Removing the key and the value from the enumMap: " + colours.remove(Colour.BLACK, 3));
Removing the key and the value from the enumMap: true
The enumMap now has: {RED=1, BLUE=2}
Enter fullscreen mode Exit fullscreen mode

The result is:

The enumMap now has: {RED=1, BLUE=2}
Enter fullscreen mode Exit fullscreen mode

How to replace an enumMap

replace(key, value)

It replaces the old value with a new value.

colours.replace(Colour.RED, 5);

System.out.println("The new enum now has: " + colours);
Enter fullscreen mode Exit fullscreen mode

Result is:

The new enum now has: {RED=5, BLUE=2}
Enter fullscreen mode Exit fullscreen mode

replace (key, oldValue, newValue)

This method replaces the old value with a new one only if the old value is linked with a specific key.

colours.replace(Colour.BLUE, 2, 4);

         System.out.println("The new enum now has: " + colours);
Enter fullscreen mode Exit fullscreen mode

The result is:

The new enum now has: {RED=5, BLUE=4}
Enter fullscreen mode Exit fullscreen mode

replaceAll()

It replaces the value of each element with the result of the function.

      colours.replaceAll((key, oldValue) -> oldValue + 7);

        System.out.println("EnumMap using replaceAll(): " + colours);
Enter fullscreen mode Exit fullscreen mode

The result is:

EnumMap using replaceAll(): {RED=12, BLUE=11}
Enter fullscreen mode Exit fullscreen mode

A few notes about enumMaps:

  • EnumMaps maintain the natural order of their keys.

  • We cannot have null keys.

  • Internally, enumMaps are represented as arrays.

CONCLUSION

In this article, you've learned about enumMaps and its methods.

I hope you've found this article helpful.

If you enjoy my writing, please consider subscribing to my newsletter.

I'm also on LinkedIn and Twitter.

Until next time! 🙋🏾‍♀️

ADDITIONAL RESOURCES

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player