이번에 처음 알게 된 EnumMap이다.
Map 구현체 중 하나로 키값을 Enum 클래스만 받는 특징이 있다.
EnumMap의 장점으로는 Enum클래스의 ordinal() 메서드를 사용하여 데이터에 접근하는데
HashMap처럼 해쉬값을 구할 필요 없이 Enum클래스의 인덱스 값으로 접근한다.
그렇기 때문에 HashMap 보다 더 빠르다는 장점이 있다
무엇보다 가장 큰 장점은 타입 안전성이다.
키는 오직 Enum만 받을 수 있기 때문에 복잡한 구현 과정에서 다른 데이터를 키로 받을
위험을 제거해 준다.
즉, 개발자의 실수로 인해 데이터가 오염될 부담을 줄여주는 것이다.
그렇다면 언제 쓰는 걸까?
키로 오직 Enum클래스만 받는다는 확신이 있을 때 Map을 EnumMap으로 구현하면 된다.
public enum Category {
MEAT("🥩 고기 종류"),
DRINK("🥤 음료 종류"),
VEGETABLE("🥬 야채 종류"),
FRUIT("🍎 과일 종류");
private final String koreanName;
Category(String koreanName) {
this.koreanName = koreanName;
}
@Override
public String toString() {
return koreanName;
}
}
public class Inventory {
private final Map<Category, Map<String, Integer>> inventory = new EnumMap<>(Category.class);
public Inventory() {
createInventory();
}
private void createInventory() {
for (Category category : Category.values()) {
inventory.put(category, new HashMap<>());
}
}
나는 이번에 카테고리 별로 정리할 자료구조가 필요했는데 해결책을 찾는 와중에
알게 된 Map 구현체였다.
나는 카테코리별로 이름과 개수가 필요해서 이중 Map을 사용했는데 외부 Map을 EnumMap으로
카테고리만 받을 수 있게 했다.
'우테코 프리코스 > 프리코스 오픈미션' 카테고리의 다른 글
| SRP은 왜 지켜야할까? (0) | 2025.11.10 |
|---|---|
| 게임 진행을 어떻게 제어할까? (0) | 2025.11.09 |
| 의존성을 주입 하라고요? (0) | 2025.11.07 |
| 객체를 분리하는 기준이 뭘까? (0) | 2025.11.07 |
| Facade 패턴이 뭐야? (0) | 2025.11.06 |