`java.util.AbstractMap.SimpleEntry` 클래스는 `java.util.Map.Entry` 인터페이스를 구현하는 간단한 구현체입니다. `Map.Entry`는 맵의 키-값 쌍을 나타내는 인터페이스이며, `SimpleEntry` 클래스는 이 인터페이스를 구현함으로써 키-값 쌍을 저장하고 검색하는 기능을 제공합니다.
`SimpleEntry` 클래스는 다음과 같은 생성자를 제공합니다
public SimpleEntry(K key, V value)
이 생성자는 주어진 키와 값으로 `SimpleEntry` 객체를 생성합니다.
또한 `SimpleEntry` 클래스는 `Map.Entry` 인터페이스의 다음 메서드를 구현합니다:
public K getKey()
public V getValue()
public V setValue(V value)
`getKey()` 메서드는 이 `SimpleEntry` 객체의 키를 반환하며, `getValue()` 메서드는 이 객체의 값(value)을 반환합니다. `setValue()` 메서드는 이 객체의 값(value)을 주어진 값으로 설정하고, 이전 값(value)을 반환합니다.
`SimpleEntry` 클래스는 불변(immutable) 클래스가 아니므로, `setValue()` 메서드를 사용하여 값을 변경할 수 있습니다. 이 클래스는 `hashCode()` 및 `equals()` 메서드도 구현합니다. 따라서 이 클래스의 객체는 맵의 키 또는 값으로 사용될 수 있습니다.
아래는 `SimpleEntry` 클래스의 간단한 예시입니다
import java.util.AbstractMap;
import java.util.Map;
public class SimpleEntryExample {
public static void main(String[] args) {
Map.Entry<String, Integer> entry = new AbstractMap.SimpleEntry<>("apple", 10);
System.out.println(entry.getKey()); // "apple"
System.out.println(entry.getValue()); // 10
entry.setValue(20);
System.out.println(entry.getValue()); // 20
}
}
위 예제에서는 `SimpleEntry` 클래스를 사용하여 "apple"이라는 문자열을 키로, 10이라는 정수를 값으로 갖는 맵 엔트리를 만듭니다. `getKey()` 및 `getValue()` 메서드를 사용하여 키와 값을 가져오고, `setValue()` 메서드를 사용하여 값을 변경합니다.`SimpleEntry` 클래스는 또한 제네릭(generic) 클래스이므로, 키와 값의 타입을 지정할 수 있습니다. 예를 들어, `SimpleEntry<String, Integer>`는 문자열 키와 정수 값을 가지는 객체를 나타내며, `SimpleEntry<Integer, Double>`는 정수 키와 더블 값을 가지는 객체를 나타냅니다.
또한 `SimpleEntry` 클래스는 `toString()` 메서드를 오버라이드하여 맵 엔트리의 문자열 표현을 반환합니다. 따라서 `System.out.println()`과 같은 출력 메서드에서 `SimpleEntry` 객체를 사용할 때 유용합니다.
`SimpleEntry` 클래스는 `Map.Entry` 인터페이스의 구현을 단순화하고, 키-값 쌍을 쉽게 다룰 수 있도록 도와줍니다. 또한, `AbstractMap` 클래스의 `entrySet()` 메서드를 사용하여 맵의 모든 엔트리를 `SimpleEntry` 객체로 구성된 `Set`으로 반환할 수 있습니다.
다음은 `SimpleEntry` 객체를 사용하여 맵의 모든 엔트리를 출력하는 예시입니다
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class SimpleEntryExample2 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
map.put("cherry", 30);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// Using SimpleEntry
for (Map.Entry<String, Integer> entry : map.entrySet()) {
AbstractMap.SimpleEntry<String, Integer> simpleEntry =
new AbstractMap.SimpleEntry<>(entry.getKey(), entry.getValue());
System.out.println(simpleEntry);
}
}
}
위 예제에서는 `HashMap`을 사용하여 문자열 키와 정수 값을 가지는 맵을 만듭니다. `entrySet()` 메서드를 사용하여 맵의 모든 엔트리를 가져와서 각 엔트리의 키와 값을 출력합니다. 그 다음, `SimpleEntry` 객체를 사용하여 맵의 모든 엔트리를 간단하게 출력합니다.다음은 `SimpleEntry` 클래스를 사용하여 간단한 맵을 만들고, `SimpleEntry` 객체를 사용하여 맵 엔트리를 추가하고 삭제하는 예시 코드입니다
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class SimpleEntryExample3 {
public static void main(String[] args) {
// Create a map with String keys and Integer values
Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
// Create a SimpleEntry object with a String key and Integer value
Map.Entry<String, Integer> entry = new AbstractMap.SimpleEntry<>("cherry", 30);
// Add the SimpleEntry object to the map
map.put(entry.getKey(), entry.getValue());
// Remove an entry using a SimpleEntry object
Map.Entry<String, Integer> entryToRemove = new AbstractMap.SimpleEntry<>("banana", 20);
map.entrySet().remove(entryToRemove);
// Print the map
System.out.println(map);
}
}
위 예제에서는 `HashMap`을 사용하여 문자열 키와 정수 값을 가지는 맵을 만듭니다. `SimpleEntry` 클래스를 사용하여 "cherry"라는 문자열을 키로, 30이라는 정수를 값으로 갖는 `Map.Entry` 객체를 생성하고, `put()` 메서드를 사용하여 이 객체를 맵에 추가합니다.
그 다음, `SimpleEntry` 객체를 사용하여 "banana"라는 문자열을 키로, 20이라는 정수를 값으로 갖는 `Map.Entry` 객체를 생성하고, `entrySet().remove()` 메서드를 사용하여 맵에서 이 객체를 제거합니다.
마지막으로, `System.out.println()` 메서드를 사용하여 맵의 내용을 출력합니다. 출력 결과는 다음과 같습니다
{apple=10, cherry=30}
'PT선생님의 코딩 강좌' 카테고리의 다른 글
[PT선생님][34]java.lang.AbstractMethodError 알아보기 (0) | 2023.02.25 |
---|---|
[PT선생님][33]java.util.AbstractMap.SimpleImmutableEntry 알아보기 (0) | 2023.02.24 |
[PT선생님][31]java.util.AbstractMap 알아보기 (0) | 2023.02.24 |
[PT선생님][30]javax.swing.AbstractListModel 알아보기 (0) | 2023.02.23 |
[PT선생님][29]자바 java.util.AbstractList 알아보기 (0) | 2023.02.23 |