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

자바 열거맵

자바 열거 맵

이 자습서에서는 예제를 통해 Java EnumMap 클래스와 해당 작업에 대해 알아봅니다.

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

EnumMap에서 , 열거형 요소는 로 사용됩니다. . 지도 인터페이스를 구현합니다.

EnumMap에 대해 알아보기 전에 , Java Enums에 대해 알아야 합니다.

<시간>

EnumMap 만들기

열거형 맵을 생성하려면 java.util.EnumMap을 가져와야 합니다. 먼저 패키지. 패키지를 가져온 후 Java에서 열거형 맵을 만드는 방법은 다음과 같습니다.

enum Size {
    SMALL, MEDIUM, LARGE, EXTRALARGE
}

EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

위의 예에서 sizes라는 이름의 열거형 맵을 만들었습니다. .

여기,

<시간>

EnumMap의 메소드

EnumMap 클래스는 열거형 맵에서 다양한 요소를 수행할 수 있는 메서드를 제공합니다.

<시간>

EnumMap에 요소 삽입

예를 들어,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);

        // Using the put() Method
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);

        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);

        // Using the putAll() Method
        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()을 사용했습니다. 열거형 맵 sizes1의 모든 요소를 ​​삽입하는 메소드 size2의 열거형 맵으로 .

HashMap과 같은 다른 맵의 요소를 삽입하는 것도 가능합니다. , TreeMap 등을 putAll()를 사용하여 열거형 맵에 추가합니다. . 그러나 모든 맵은 동일한 열거형 유형이어야 합니다.

<시간>

EnumMap 요소에 액세스

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

예를 들어,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        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);

        // Using the entrySet() Method
        System.out.println("Key/Value mappings: " + sizes.entrySet());

        // Using the keySet() Method
        System.out.println("Keys: " + sizes.keySet());

        // Using the values() Method
        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) {

        // Creating an EnumMap of the Size enum
        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);

        // Using the get() Method
        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) {

        // Creating an EnumMap of the Size enum
        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);

        // Using the remove() Method
        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) {

        // Creating an EnumMap of the Size enum
        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);

        // Using the replace() Method
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap using replace(): " + sizes);

        // Using the replaceAll() Method
        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() EnumMap 검색 지정된 키에 대해 부울 결과를 반환합니다.
containsValue() EnumMap 검색 지정된 값에 대해 부울 결과를 반환합니다.
size() EnumMap의 크기를 반환합니다.
clear() EnumMap에서 모든 항목을 제거합니다.
<시간>

EnumSet 대 열거맵

EnumSet 및 EnumMap 모두 클래스는 열거형 값을 저장하기 위한 데이터 구조를 제공합니다. 그러나 그들 사이에는 몇 가지 중요한 차이점이 있습니다.

<시간>

복제 및 직렬화 가능한 인터페이스

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

복제 가능한 인터페이스

EnumMap 클래스의 인스턴스를 복사합니다.

직렬화 가능한 인터페이스

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

Serializable 인터페이스를 통해 클래스를 직렬화할 수 있습니다. 이것은 Serializable을 구현하는 클래스의 객체를 의미합니다. 비트 또는 바이트로 변환할 수 있습니다.


java

  1. C 열거
  2. 자바 연산자
  3. 자바 주석
  4. 자바 for-each 루프
  5. 자바 문자열
  6. 자바 인터페이스
  7. 자바 익명 클래스
  8. 자바 열거형
  9. 자바 열거형 생성자
  10. 자바 열거형 문자열