티스토리 뷰

Java

[Java] EnumSet, EnumMap

snail voyager 2023. 10. 29. 21:36
728x90
반응형

EnumSet

  • 키로 enum 상수를 사용
  • enum 상수를 기반으로 하므로 효율적으로 동작
  • 키 집합이 고정되어 있으므로 메모리 사용이 효율적
  • 키가 해당 enum의 상수와 일치하는 경우 비트 벡터로 구현되어 있어 공간 효율적
  • null 값을 허용하지 않는다
  • 열거 순서(iterator order)는 해당 enum의 상수가 선언된 순서
enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public static Day WEEKEND_DAY = EnumSet.of(SATURDAY, SUNDAY);

EnumMap

  • 키로 enum 상수를 사용
  • enum 상수를 기반으로 하므로, 키의 순서가 고정되어 있고 연속적
  • enum 상수를 사용할 때 빠른 검색과 삽입이 가능
  • 키 집합이 고정되어 있으므로 메모리 사용이 효율적
  • null 값을 허용하지 않는다
  • 열거 순서(iterator order)는 해당 enum의 상수가 선언된 순서
enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public class Main {
    public static void main(String[] args) {
        EnumMap<Day, List<String>> scheduleMap = new EnumMap<>(Day.class);

        for (Day day : Day.values()) {
            // 각 요일에 대한 빈 리스트를 생성하여 EnumMap에 추가
            scheduleMap.put(day, new ArrayList<>());
        }

        // 요일별 스케줄에 항목 추가
        scheduleMap.get(Day.MONDAY).add("Morning Meeting");
        scheduleMap.get(Day.MONDAY).add("Afternoon Planning");

        scheduleMap.get(Day.TUESDAY).add("Gym Workout");
        scheduleMap.get(Day.TUESDAY).add("Client Meeting");

        // 나머지 요일에 대한 항목 추가 가능

        // 요일별 스케줄 출력
        for (Day day : Day.values()) {
            List<String> daySchedule = scheduleMap.get(day);
            System.out.println(day + "'s Schedule: " + daySchedule);
        }
    }
}

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] Java 동시성  (0) 2023.11.20
[Java] Executor  (0) 2023.11.20
[Java] 날짜, 시간 API  (0) 2023.10.18
[Java] Lambda 표현식으로 리펙토링  (1) 2023.10.12
[Java] Lombok @Getter boolean 변수명 주의할 점  (0) 2023.09.26
반응형
300x250