EnumSet이란?java.util 패키지에서 제공하는 Enum 클래스와 함께 동작하는 구현체EnumSet의 특징Enumset의 모든 메서드는 산술 비트 연산자를 이용하여 구현된다.enum 값만 포함할 수 있고, 모든 값은 동일한 enum 에 속해야 한다. null 값을 추가할 수 없다.null 값을 추가하려고 하면, NullPointerException이 발생한다.enum 상수가 선언된 순서대로 요소를 반복한다.HashSet과 다르게 예측 가능한 순서로 값을 처리할 수 있다.EnumSet 메서드public enum Color {
RED, YELLOW, GREEN, BLUE, BLACK, WHITE
}
EnumSet을 만들 수 있다.EnumSet<Color> set = EnumSet.allOf(Color.class);
set.forEach(System.out::println); // RED, YELLOW, GREEN, BLUE, BLACK, WHITE
Enum 컬렉션을 갖는 EnumSet을 생성한다.EnumSet<Color> set = EnumSet.noneOf(Color.class);
EnumSet을 생성한다.EnumSet<Color> set = EnumSet.of(Color.YELLOW, Color.BLUE);
EnumSet을 생성한다.EnumSet<Color> set = EnumSet.complementOf(EnumSet.of(Color.BLACK,Color.BLUE));
set.forEach(System.out::println);
EnumSet의 모든 요소를 복사하여 새로운 EnumSet을 생성한다.EnumSet.copyOf(EnumSet.of(Color.BLACK, Color.WHITE));
EnumSet에 요소를 추가한다.EnumSet<Color> set = EnumSet.of(Color.YELLOW, Color.BLUE);
set.add(Color.RED);
EnumSet에 포함되어 있는지 확인한다.
EnumSet<Color> set = EnumSet.of(Color.YELLOW, Color.BLUE);
set.add(Color.RED);
boolean isContain = set.contains(Color.RED);
if(isContain) {
// 빨간색이 포함되어 있음
}
set.remove(Color.RED);
EnumSet 활용 예제public enum ReleaseProcessStatus implements BaseEnumCode<String> {
UN_PROCESS("UNP", "미작업", EnumSet.of(UN_WORKED)),
READY("RDY", "출고준비", EnumSet.of(ALLOCATION_ING)),
PROCESSING("ING", "출고중", EnumSet.of(ALLOCATION, PACK_COMPLETE, DELIVERY_STANDBY)),
COMPLETE("COM", "출고완료", EnumSet.of(DELIVERY_COMPLETE)),
;
private final String code;
private final String desc;
private final EnumSet<WorkStatus> workStatuses;
}
if (EnumSet.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY).contains(date.getDayOfWeek())) {
/* ... */
}
🗓️
LocalDate.getDayOfWeek()
:EnumDayOfWeek의 요일 필드를 가져온다.
아이템 36 - 비트 필드 대신 EnumSet을 사용하라
[Java] EnumSet
자바 enum 클래스는 왜 생겨났을까? 열거형의 필요성과 사용법
Enum 활용하기 (feat : EnumSet, EnumMap)
[Java] Enum, 자바의 열거타입을 알아보자