English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 흐름 제어

Java 배열

Java 방향 대상(I)

Java 방향 대상(II)

Java 방향 대상(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 콜렉션

Java Set 콜렉션

Java 입력/출력(I/O)

Java Reader/Writer

Java 다른 주제

Java EnumMap

이 튜토리얼에서는 예제를 통해 Java EnumMap 클래스와 그 작업을 배울 것입니다.

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

EnumMap에서 열거형 요소는구현합니다.Map 인터페이스를.

EnumMap를 학습하기 전에Java 열거형.

EnumMap을 생성합니다

enum 맵을 생성하려면 먼저 java.util.EnumMap 패키지를 가져오는 것이 중요합니다. 패키지를 가져온 후 Java로 enum 맵을 생성할 수 있습니다.

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

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

이곳에서

  • Size - 값에 매핑된 열거형

  • Integer- 와 해당 키와 연관된 열거형 맵의

EnumMap 메서드

EnumMap 클래스는 다양한 요소를 수행할 수 있는 방법을 제공합니다

요소를 EnumMap에 삽입합니다

  • put() - 지정된 키/값 매핑(항목)을 EnumMap에 삽입합니다

  • putAll() - 지정된 맵의 모든 항목을 이 맵에 삽입합니다

예를 들어,

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() 메서드를 사용하여 enum 맵 size1의 모든 요소를 size에 삽입합니다2의 EnumMap에.

putAll() 메서드를 사용하여 다른 맵(예: HashMap, TreeMap 등)의 요소를 EnumMap에 삽입할 수 있습니다. 하지만 모든 맵은 동일한 열거형 타입을 가져야 합니다.

EnumMap 요소에 접근합니다

1.entrySet(), keySet() 및 values()를 사용하여

  • 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 매핑: + 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 매핑: [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("MEDIUM의 값: " + value);
    }
}

출력 결과

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
MEDIUM의 값: 32

EnumMap 요소 제거

  • remove(key) - 지정된 키와 연결된 항목을 반환하고 맵에서 제거

  • remove(key, value) - 지정된 키가 지정된 값에 매핑되어 있고布尔 값이 반환될 때만 맵에서 항목을 제거

예를 들어,

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("제거된 값: " + value);
        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("항목 {SMALL="28}이 제거되었나? " + result);
        System.out.println("갱신된 EnumMap: " + sizes);
    }
}

출력 결과

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
제거된 값: 32
항목 {SMALL=28}이 제거되었나? True
갱신된 EnumMap: {LARGE=36, EXTRALARGE=40}

EnumMap 요소 대체

  • replace(key, value) - 키 key와 연결된 값을 value로 대체

  • replace(key, old, new) -  old 값이 지정된 키 key와 연결되어 있을 때만 new 값으로 old 값 대체

  • replaceAll(function) - 지정된 함수의 결과를 매핑된 각 값에 대체합니다

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 사용 방법 replace(): " + sizes);
        // replaceAll() 메서드 사용
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap 사용 방법 replaceAll(): " + sizes);
    }
}

출력 결과

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

위의 프로그램에서 다음과 같은 문장에 주의하세요

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

여기서 이 메서드는 map의 모든 항목에 접근합니다. 그런 다음, 모든 값을lambda 표현식제공하는 새로운 값.

기타 메서드

메서드설명
clone()EnumMap의 복사본을 생성
containsKey()EnumMap이 지정한 키를 검색하고 부울 결과를 반환
containsValue()EnumMap이 지정한 값을 검색하고 부울 결과를 반환
size()반환하는 크기 EnumMap
clear()모든 항목을 EnumMap에서 제거

EnumSet과 EnumMap의 차이

EnumSetEnumSet과 EnumMap 클래스는 모두 Enum 값을 저장하는 데이터 구조를 제공합니다. 그러나 그들 간에 주요 차이가 있습니다.

  • Enum 집합은 내부에서 비트 시리즈로 표현되며, Enum Map은 내부에서 배열로 표현됩니다.

  • Enum 집합은 pre-defined 메서드로 생성됩니다. 예를 들어 allOf(), noneOf(), of() 등이 있습니다. 하지만, Enum Map은 생성자를 사용하여 생성됩니다.

Cloneable 과 Serializable 인터페이스

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

Cloneable 克隆인터페이스

EnumMap 클래스는 클래스의 인스턴스를 복사할 수 있도록 허용합니다.

Serializable 시리얼라이즈 가능 인터페이스

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

Serializable 인터페이스는 클래스가 시리얼라이즈될 수 있도록 허용합니다. 이는 Serializable이 실제 클래스의 객체를 비트나 바이트로 변환할 수 있음을 의미합니다.