[Effective Java 3/e] 아이템 37 - odinal 인덱싱 대신 EnumMap을 사용하라
아이템 37 - odinal 인덱싱 대신 EnumMap을 사용하라
ordinal() 을 배열 인덱스로 사용 - 따라 하지 말 것
Set<Plant>[] plantsByLifeCycle = (Set<Plant>[]) new Set[Plant.LifeCycle.values().length];
for(int i = 0; i < plantsByLifeCycle.length; i++)
plantsByLifeCycle[i] = new HashSet<>();
for(Plant p : garden)
plantsByLifeCycle[p.lifeCycle.ordinal()].add(p);
}
EnumMap을 사용해 데이터와 열거 타입을 매핑한다
Map<Plant.LifeCycle, Set<Plant>> plantsByLifeCycle = new EnumMap<>(Plant.LifeCycle.class);
for(Plant.LifeCycle lc : Plant.LifeCycle.values())
plantsByLifeCycle.put(lc, new HashSet<>());
for(Plant p : garden)
plantsByLifeCycle.get(p.lifeCycle).add(p);
}
정리
- 배열의 인덱스를 얻기 위해 ordinal을 쓰는 대신 EnumMap을 사용하라