English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 예제를 통해 Java EnumMap 클래스와 그 작업을 배울 것입니다.
Java 콜렉션 프레임워크의 EnumMap 클래스는 열거형 요소에 대한 맵 구현을 제공합니다.
EnumMap에서 열거형 요소는키구현합니다.Map 인터페이스를.
EnumMap를 학습하기 전에Java 열거형.
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 클래스는 다양한 요소를 수행할 수 있는 방법을 제공합니다
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에 삽입할 수 있습니다. 하지만 모든 맵은 동일한 열거형 타입을 가져야 합니다.
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
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}
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에서 제거 |
EnumSetEnumSet과 EnumMap 클래스는 모두 Enum 값을 저장하는 데이터 구조를 제공합니다. 그러나 그들 간에 주요 차이가 있습니다.
Enum 집합은 내부에서 비트 시리즈로 표현되며, Enum Map은 내부에서 배열로 표현됩니다.
Enum 집합은 pre-defined 메서드로 생성됩니다. 예를 들어 allOf(), noneOf(), of() 등이 있습니다. 하지만, Enum Map은 생성자를 사용하여 생성됩니다.
EnumMap 클래스는 Cloneable과 Serializable 인터페이스를 구현합니다.
Cloneable 克隆인터페이스
EnumMap 클래스는 클래스의 인스턴스를 복사할 수 있도록 허용합니다.
Serializable 시리얼라이즈 가능 인터페이스
Java 객체를 네트워크를 통해 전송할 때마다 객체를 비트나 바이트로 변환해야 합니다. 이는 Java 객체가 네트워크를 통해 전송될 수 없기 때문입니다.
Serializable 인터페이스는 클래스가 시리얼라이즈될 수 있도록 허용합니다. 이는 Serializable이 실제 클래스의 객체를 비트나 바이트로 변환할 수 있음을 의미합니다.