EnumMap
EnumMap (enum 키 전용 Map)
enum 타입 키와 함께 사용하도록 특화된 Map 구현이에요. enum 맵의 모든 키는 맵 생성 시 명시적 또는 암시적으로 지정된 단일 enum 타입에서 와야 해요.
본문
enum 맵은 내부적으로 배열로 표현돼요. 이 표현은 매우 컴팩트하고 효율적이에요. 모든 기본 연산이 일정 시간(constant time)에 실행되며, HashMap보다 더 빠를 가능성이 높아요.
enum 맵은 키의 자연 순서(enum 상수가 선언된 순서)로 유지돼요. 이는 컬렉션 뷰(keySet(), entrySet(), values())가 반환하는 반복자에 반영돼요. 이 반복자들은 약하게 일관적(weakly consistent)이라 ConcurrentModificationException을 절대 던지지 않고, 순회 중 발생한 수정의 영향을 보여줄 수도 있고 아닐 수도 있어요.
null 키는 허용되지 않아요. null 키를 삽입하려 하면 NullPointerException이 던져져요. 다만 null 키의 존재 여부를 검사하거나 제거하는 것은 정상 동작해요. null 값은 허용돼요.
대부분의 컬렉션 구현처럼 EnumMap은 동기화되지 않아요. 여러 쓰레드가 동시에 접근하고 적어도 하나의 쓰레드가 맵을 수정한다면 외부에서 동기화해야 해요.
Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
이 클래스는 Java Collections Framework의 구성원이에요. 코드와 시그니처는 원문 그대로 보존돼요.