산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java EnumMap 마스터: 열거형 키로 효율적인 키-값 매핑

Java EnumMap

이 튜토리얼에서는 예제를 통해 Java EnumMap 클래스와 연산을 학습합니다.

EnumMap 클래스는 Java 컬렉션 프레임워크에서 열거형의 요소를 위한 맵 구현을 제공합니다.

EnumMap에서 열거형 요소가 키로 사용됩니다. Map 인터페이스를 구현합니다.


EnumMap 생성하기

EnumMap을 생성하려면 먼저 java.util.EnumMap 패키지를 임포트해야 합니다. 패키지 임포트 후 Java에서 EnumMap을 생성하는 방법은 다음과 같습니다.

enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

위 예제에서 sizes라는 EnumMap을 생성했습니다.

여기서:


EnumMap 메서드

EnumMap 클래스는 EnumMap에서 다양한 연산을 수행할 수 있는 메서드를 제공합니다.


EnumMap에 요소 삽입하기

예제:

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Size 열거형의 EnumMap 생성
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);
        // put() 메서드 사용
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);
        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);
        // putAll() 메서드 사용
        sizes2.putAll(sizes1);
        sizes2.put(Size.LARGE, 36);
        System.out.println("EnumMap2: " + sizes2);
    }
}

출력

EnumMap1: {SMALL=28, MEDIUM=32} EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}

위 예제에서 putAll() 메서드로 EnumMap sizes1의 모든 요소를 sizes2 EnumMap에 삽입했습니다.

HashMap, TreeMap 등 다른 맵의 요소를 putAll()로 EnumMap에 삽입하는 것도 가능합니다. 단, 모든 맵이 같은 열거형 타입이어야 합니다.


EnumMap 요소 접근하기

1. entrySet(), keySet(), values() 사용

예제:

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Size 열거형의 EnumMap 생성
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);
        // entrySet() 메서드 사용
        System.out.println("Key/Value mappings: " + sizes.entrySet());
        // keySet() 메서드 사용
        System.out.println("Keys: " + sizes.keySet());
        // values() 메서드 사용
        System.out.println("Values: " + sizes.values());
    }
}

출력

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40] Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE] Values: [28, 32, 36, 40]

2. get() 메서드 사용

get() 메서드는 지정된 키와 연관된 값을 반환합니다. 지정된 키를 찾지 못하면 null 반환.

예제:

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Size 열거형의 EnumMap 생성
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);
        // get() 메서드 사용
        int value = sizes.get(Size.MEDIUM);
        System.out.println("Value of MEDIUM: " + value);
    }
}

출력

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Value of MEDIUM: 32

EnumMap 요소 제거하기

예제:

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Size 열거형의 EnumMap 생성
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);
        // remove() 메서드 사용
        int value = sizes.remove(Size.MEDIUM);
        System.out.println("Removed Value: " + value);
        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("Is the entry {SMALL=28} removed? " + result);
        System.out.println("Updated EnumMap: " + sizes);
    }
}

출력

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Removed Value: 32 Is the entry {SMALL=28} removed? True Updated EnumMap: {LARGE=36, EXTRALARGE=40}

EnumMap 요소 교체하기

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Size 열거형의 EnumMap 생성
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);
        // replace() 메서드 사용
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap using replace(): " + sizes);
        // replaceAll() 메서드 사용
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap using replaceAll(): " + sizes);
    }
}

출력

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40} EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}

위 프로그램에서 다음 문장을 주목하세요:

sizes.replaceAll((key, oldValue) -> oldValue + 3);

이 메서드는 맵의 모든 엔트리에 접근한 후 람다 표현식이 제공하는 새 값으로 모든 값을 교체합니다.


기타 메서드

메서드설명
clone()EnumMap 복사본 생성
containsKey()지정된 키 검색하고 불리언 결과 반환
containsValue()지정된 값 검색하고 불리언 결과 반환
size()EnumMap 크기 반환
clear()EnumMap에서 모든 엔트리 제거

EnumSet vs EnumMap

EnumSet과 EnumMap 클래스 모두 열거형 값 저장을 위한 자료구조를 제공하지만 주요 차이점이 존재합니다.


Cloneable과 Serializable 인터페이스

EnumMap 클래스는 Cloneable과 Serializable 인터페이스도 구현합니다.

Cloneable 인터페이스

EnumMap 클래스가 클래스 인스턴스의 복사본을 만들 수 있게 합니다.

Serializable 인터페이스

Java 객체를 네트워크로 전송해야 할 때 객체를 비트나 바이트로 변환해야 합니다. Java 객체는 네트워크로 직접 전송할 수 없기 때문입니다.

Serializable 인터페이스는 클래스가 직렬화될 수 있게 합니다. 즉, Serializable을 구현한 클래스의 객체를 비트나 바이트로 변환할 수 있습니다.

java

  1. C 열거형(Enum) 마스터하기: 정의, 선언, 플래그 연산
  2. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  3. Java 주석: 종류, 사용법, 모범 사례
  4. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  5. Java String 마스터하기: 생성, 메서드, 모범 사례
  6. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  7. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  8. Java Enum 완전 정복: Enum과 Enum 클래스 종합 가이드
  9. Java Enum 생성자 완벽 해설: 실전 예제로 이해하기
  10. Java Enum 문자열 표현 마스터: 기본값, 오버라이딩, 고급 패턴