Core Java
Mapping enum keys with EnumMaps
Here’s a type that has been around in the JDK for a while and that comes in handy when we want to define maps with enum types as keys: An EnumMap
is a such as specialized Map
.
We’ll create a map for a given enum:
public enum CoffeeType { ESPRESSO, POUR_OVER, FRENCH_PRESS }
The EnumMap
needs to be aware of the enum class at creation time:
Map<CoffeeType, String> favoriteCoffeeOrigins = new EnumMap<>(CoffeeType.class); favoriteCoffeeOrigins.put(CoffeeType.ESPRESSO, "Ethiopia"); favoriteCoffeeOrigins.put(CoffeeType.POUR_OVER, "Colombia"); favoriteCoffeeOrigins.put(CoffeeType.FRENCH_PRESS, "Indonesia"); assertThat(favoriteCoffeeOrigins.get(CoffeeType.ESPRESSO)).isEqualTo("Ethiopia");
An EnumMap
is much more efficient compared to a HashMap
implementation. All basic map operations of this Java implementation are executed in constant time.
This post was reposted from my newsletter issue 017.
Published on Java Code Geeks with permission by Sebastian Daschner, partner at our JCG program. See the original article here: Mapping enum keys with EnumMaps Opinions expressed by Java Code Geeks contributors are their own. |