`java.util.AbstractMap.SimpleImmutableEntry`는 자바에서 제공하는 클래스 중 하나로, 키-값 쌍의 불변(Immutable)이며 추상 클래스 `AbstractMap`을 상속한 클래스입니다.
이 클래스는 키-값 쌍의 정보를 저장하며, 그 값을 변경할 수 없도록 설계되어 있습니다. 따라서 이 클래스를 사용하여 만든 객체는 생성 시에 설정한 값 그대로 유지되며, 변경할 수 없습니다.
`SimpleImmutableEntry` 클래스는 다음과 같은 생성자를 제공합니다
public SimpleImmutableEntry(K key, V value)
이 생성자는 키와 값을 파라미터로 받아 객체를 생성합니다.
`SimpleImmutableEntry` 클래스는 `Map.Entry` 인터페이스를 구현하므로, `Map.Entry` 인터페이스에서 정의된 메서드들을 구현하고 있습니다. 이 중에서 `getKey()`와 `getValue()` 메서드는 해당 키와 값을 반환하며, `setValue()` 메서드는 불변 클래스이므로 지원하지 않습니다.
이 클래스를 사용하면, `Map` 인터페이스를 구현한 컬렉션 객체에서 키-값 쌍 정보를 저장하고 전달할 때 유용합니다. 예를 들어, 다음과 같이 사용할 수 있습니다
Map<String, Integer> myMap = new HashMap<>();
myMap.put("one", 1);
myMap.put("two", 2);
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
// SimpleImmutableEntry를 사용한 예시
Map.Entry<String, Integer> entry = new AbstractMap.SimpleImmutableEntry<>("three", 3);
myMap.put(entry.getKey(), entry.getValue());
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
위 예시에서, `SimpleImmutableEntry` 클래스를 사용하여 `"three"`와 `3`의 키-값 쌍 정보를 저장하고, 이를 `myMap` 객체에 추가하였습니다.
이후 `entrySet()` 메서드를 사용하여 `myMap`의 모든 키-값 쌍 정보를 가져와 출력하였습니다.`SimpleImmutableEntry` 클래스는 또한 `hashCode()`와 `equals()` 메서드를 오버라이드하였습니다.
이는 해당 클래스의 객체가 `Map` 인터페이스를 구현한 컬렉션 객체에서 키-값 쌍 정보를 저장하는 용도로 사용될 때, 다른 객체와 동등성 비교를 위해 필요합니다.
따라서, `SimpleImmutableEntry` 클래스의 객체는 동등성 비교를 위해 다음과 같이 사용할 수 있습니다
Map.Entry<String, Integer> entry1 = new AbstractMap.SimpleImmutableEntry<>("one", 1);
Map.Entry<String, Integer> entry2 = new AbstractMap.SimpleImmutableEntry<>("one", 1);
Map.Entry<String, Integer> entry3 = new AbstractMap.SimpleImmutableEntry<>("two", 2);
System.out.println(entry1.equals(entry2)); // true
System.out.println(entry1.equals(entry3)); // false
Set<Map.Entry<String, Integer>> entrySet = new HashSet<>();
entrySet.add(entry1);
entrySet.add(entry2);
entrySet.add(entry3);
System.out.println(entrySet.size()); // 2
위 예시에서, `SimpleImmutableEntry` 클래스의 객체는 `equals()` 메서드를 오버라이드하였기 때문에, `entry1`과 `entry2`의 동등성 비교를 하면 `true`를 반환합니다.
반면 `entry1`과 `entry3`의 동등성 비교를 하면 `false`를 반환합니다. 따라서 `entrySet`에는 `entry1`과 `entry2`가 모두 저장되고, `entry3`은 중복되지 않고 하나만 저장됩니다.
위와 같이 `SimpleImmutableEntry` 클래스를 사용하면, 키-값 쌍 정보를 불변하게 저장하고 전달할 수 있으며, 컬렉션 객체에서 동등성 비교를 위한 용도로 사용할 수 있습니다.
다음은 `SimpleImmutableEntry` 클래스를 사용하여 `Map` 객체를 생성하고, 그 값을 출력하는 간단한 예제 코드입니다.
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class SimpleImmutableEntryExample {
public static void main(String[] args) {
// 불변한 키-값 쌍 정보를 저장하는 SimpleImmutableEntry 객체 생성
Map.Entry<String, Integer> entry1 = new AbstractMap.SimpleImmutableEntry<>("one", 1);
Map.Entry<String, Integer> entry2 = new AbstractMap.SimpleImmutableEntry<>("two", 2);
// SimpleImmutableEntry 객체를 사용하여 Map 객체 생성
Map<String, Integer> myMap = new HashMap<>();
myMap.put(entry1.getKey(), entry1.getValue());
myMap.put(entry2.getKey(), entry2.getValue());
// Map 객체의 키-값 쌍 정보 출력
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
}
}
위 예제 코드에서, `SimpleImmutableEntry` 클래스를 사용하여 `"one"`, `1`과 `"two"`, `2`의 불변한 키-값 쌍 정보를 저장하고, 이를 `myMap` 객체에 추가하였습니다. 이후 `entrySet()` 메서드를 사용하여 `myMap`의 모든 키-값 쌍 정보를 가져와 출력하였습니다. 출력 결과는 다음과 같습니다
one = 1
two = 2
'PT선생님의 코딩 강좌' 카테고리의 다른 글
[PT선생님][35]java.awt.image.AbstractMultiResolutionImage 알아보기 (0) | 2023.02.25 |
---|---|
[PT선생님][34]java.lang.AbstractMethodError 알아보기 (0) | 2023.02.25 |
[PT선생님][32]java.util.AbstractMap.SimpleEntry 알아보기 (0) | 2023.02.24 |
[PT선생님][31]java.util.AbstractMap 알아보기 (0) | 2023.02.24 |
[PT선생님][30]javax.swing.AbstractListModel 알아보기 (0) | 2023.02.23 |