EnumMap은 Map interface의 구현체입니다.
key값으로 enum이 들어가야 합니다.
enum Status {
STOP, START, PAUSE
}
Map<Status, String> enumMap = new EnumMap<>(Status.class);
Hash는 다른 방식보다도 검색에 빠르지만 해싱 작업이 필요합니다.
하지만 enum은 싱글톤으로 단일 객체임을 보장할 수 있기 때문에 이러한 작업이 필요 없습니다.
천만번 가져오는 과정을 10번 반복할시
HashMap은 보통 24,000,000 nano초
EnumMap은 보통 16,000,000 nano초
가 소요되었습니다. EnumMap이 HashMap보다 1.5배 정도 빠르다는 것을 확인할 수 있었습니다.
EnumMap은 TreeMap의 장점도 가지고 있습니다. 순서를 기억한다는 점입니다. 단, 여기서 말하는 순서는 사용자가 입력한 순서가 아니라 Enum에 명시되어 있는 순서를 말합니다.
이미 순서가 정해져 있기 때문에, TreeMap처럼 정렬된다 하더라도 입력 시 성능이 우수합니다.
Map의 key값이 enum이라면 EnumMap을 사용해야합니다.
HashMap보다 빠르고 TreeMap처럼 순서도 기억합니다.
reference