728x90
Java를 활용하다 보면 종종 데이터를 매핑하는 작업이 필요한 경우가 있습니다.
특히 맵(Map)을 사용할 때는 맵에 저장된 모든 엔트리(키-값 쌍)에 접근하는 것이 중요합니다.
이때 유용하게 사용할 수 있는 메서드 중 하나가 entrySet() 메서드입니다. entrySet() 메서드는 맵의 각 엔트리를 가져오는 데 유용하며, 여러 가지 상황에서 유연하게 활용할 수 있습니다.
entrySet() ❓
Set<Map.Entry<K, V>>
HashMap은 모든 객체를 항목 형태로 저장합니다.
항목은 키와 값의 쌍이며, 각 값은 고유한 키와 연관되어 있습니다. Java entryset() 메서드를 사용하면 HashMap에서 모든 항목을 가져올 수 있습니다.
entrySet() 사용 ❌
import java.util.HashMap;
import java.util.Map;
public class NoEntrySetExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// keySet()을 사용하여 맵의 각 키에 접근하고 값 출력하기
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
entrySet()을 사용하지 않고 Map의 키(key)와 값(value)에 각각 접근하는 방법은 keySet()과 get() 메서드를 활용하는 것입니다.
entrySet() 사용 ⭕️
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class EntrySetExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// entrySet()을 사용하여 맵의 각 엔트리에 접근하고 출력하기
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
- entrySet() 메서드: Map 인터페이스에 정의된 메서드로, 맵의 각 엔트리(키-값 쌍)를 Set <Map.Entry <K, V>> 형태로 반환합니다.
- Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); 에서 entrySet 변수는 맵의 모든 엔트리를 포함하는 Set으로 초기화됩니다.
- for (Map.Entry<String, Integer> entry : entrySet): entrySet에 포함된 각 엔트리를 반복적으로 접근합니다.
- entry.getKey()와 entry.getValue()를 사용하여 각 엔트리의 키와 값을 가져와 출력합니다.
Map.Entry <K, V>의 메서드
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class EntrySetMethodsExample {
public static void main(String[] args) {
// HashMap 생성 및 데이터 추가
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// entrySet()을 사용하여 맵의 각 엔트리에 접근하기
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
// 각 엔트리의 키(key)와 값을 출력하기
for (Map.Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
// 각 엔트리의 값(value) 수정하기
for (Map.Entry<String, Integer> entry : entrySet) {
if (entry.getKey().equals("B")) {
entry.setValue(100); // 키가 "B"인 엔트리의 값을 100으로 변경
}
}
// 수정된 값 확인
System.out.println("After modification:");
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
- getKey(): 엔트리의 키(key)를 반환합니다.
- getValue(): 엔트리의 값(value)를 반환합니다.
- setValue(V value): 엔트리의 값을 지정된 값(value)으로 설정합니다.
entrySet()의 장점
- 간편한 접근
- entrySet()을 사용하면 맵의 모든 엔트리에 대해 쉽게 접근할 수 있습니다.
- 각 엔트리의 키와 값을 getKey()와 getValue() 메서드를 통해 직접적으로 읽고 수정할 수 있습니다.
- 효율적인 순회
- entrySet()을 사용하면 맵의 엔트리를 순회하며 작업을 수행할 수 있습니다.
- for-each 루프나 스트림 API를 활용하여 간단하게 모든 엔트리를 처리할 수 있습니다.
- 데이터 수정의 용이성
- entrySet()에서 가져온 엔트리를 수정하면 원래 맵의 데이터도 자동으로 수정됩니다.
- 따라서 맵의 데이터를 수정할 때 불필요한 복사나 추가적인 작업을 최소화할 수 있습니다.
'자료구조' 카테고리의 다른 글
[JAVA] 그래프 (Graph)알아보기 (0) | 2024.07.07 |
---|---|
[JAVA] HashSet 클래스 사용법 (중복 없는 데이터 집합) (0) | 2024.06.29 |
[자료구조 JAVA] 우선순위 큐(Priority Queue) 클래스 알아보기 ✔ (0) | 2024.06.16 |
[자료구조 JAVA] 선형 구조 큐(Queue) 클래스 알아보기 ✔ (0) | 2024.06.15 |
[자료구조 JAVA] LinkedHashSet 알아보기 (1/2) (0) | 2024.06.15 |