Is there a more efficient and specialized implementation of a Map collection where Enum objects can serve as keys?
3 Answers
Yes. EnumMap is precisely that; an efficient implementation of the Map interface, in which the key type must be an enum:
From the API documentation:
Class EnumMap<K extends Enum<K>,V>A specialized Map implementation for use with enum type keys. 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 represented internally as arrays. This representation is extremely compact and efficient.
Example usage:
Map<MyEnum, String> map = new EnumMap<MyEnum, String>(MyEnum.class);
5 Comments
EnumMap. (That's why I deleted mine :) )I learned this recently after I accidentally stumbled upon the answer in the Java API. If you ever have a map that uses enums as keys make sure you use EnumMap. It's very simple and much more efficient:
public interface LibraryItem{ ... }
public enum LibraryItemType{ BOOK, CD, VHS, AUDIO; ... }
Map<LibraryItemType, NavigableSet<LibraryItem>> itemsByType =
new EnumMap<>(LibraryItemType.class);