인프런 커뮤니티 질문&답변

gguu님의 프로필 이미지

작성한 질문수

이펙티브 자바 완벽 공략 1부

아이템 1. 완벽 공략 1 - 열거 타입

EnumMap, EnumSet 정리

작성

·

783

0

EnumMap

  • 열거형 상수를 Key로 사용하는 Map의 구현체.

  • 열거형 상수 값을 키로 사용할 수 있고, 그 상수 마다 고유한 value를 매핑하여 사용한다.

  • EnumMap은 내부적으로 배열로 구현되어 있어, 매우 빠른 성능을 제공

  • 특히 다른 맵보다 메모리 사용량이 적다.

static EnumMap<OrderStatus, String> korMap = new EnumMap<>(OrderStatus.class) {
    {
        put(PREPARING, "준비중");
        put(SHIPPED, "출고완료");
        put(DELIVERING, "배송중");
        put(DELIVERED, "배송완료");
    }
};

public static void main(String[] args) {
    OrderStatus.korMap.forEach((key, value) -> System.out.println(key + " " + value));
}

EnumSet

  • 열거형 상수를 사용하여 집합(Set)을 구현체

  • Set의 특성상 중복된 원소를 허용하지 않음.

  • EnumSet은 내부적으로 비트 벡터로 구현되어 있어 매우 효율적이고 작은 메모리를 사용.

  • 비트연산을 통해 집합 연산을 매우 빠르게 수행

static EnumSet<OrderStatus> allOrderStatus = EnumSet.allOf(OrderStatus.class);

public static void main(String[] args) {
        allOrderStatus.forEach(System.out::println);
    }

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

EnumMap은 열거형 상수를 Key로 사용하는 Map의 구현체입니다. 열거형 상수 값을 Key로 사용할 수 있으며, 각 상수마다 고유한 value를 매핑하여 사용할 수 있습니다. EnumMap은 내부적으로 배열로 구현되어 있어서 매우 빠른 성능을 제공하며, 다른 Map에 비해 메모리 사용량이 적습니다. 예시 코드에서는 OrderStatus라는 열거형을 Key로, String 값을 Value로 매핑한 EnumMap을 생성하고 사용하는 예시를 보여주고 있습니다.

EnumSet은 열거형 상수를 사용하여 집합(Set)을 구현하는 클래스입니다. Set의 특성상 중복된 원소를 허용하지 않으며, 내부적으로 비트 벡터로 구현되어 있어서 매우 효율적이고 작은 메모리를 사용합니다. EnumSet은 비트 연산을 통해 집합 연산을 매우 빠르게 수행할 수 있습니다. 예시 코드에서는 OrderStatus 열거형의 모든 원소를 포함한 EnumSet을 생성하여 출력하는 예시를 보여주고 있습니다.

각각의 예시 코드를 실행해보면, EnumMap의 경우 key와 value를 모두 출력하고, EnumSet의 경우 모든 원소를 한 줄씩 출력합니다. 이렇게 EnumMap과 EnumSet은 열거형을 사용할 때 매우 효율적이고 편리하게 사용할 수 있습니다.

다른 질문이 있으시면 답변해드릴게요.

gguu님의 프로필 이미지

작성한 질문수

질문하기