의미
- entrySet은 Map 인터페이스에서 제공하는 메서드 중 하나로, Map에 저장된 key-value 쌍을 Set 형태로 반환하는 메서드이다.
- 이 메서드는 Map.Entry<K, V> 객체를 반환하는데, 이 객체는 Map의 각 엔트리를 나타낸다.
- 이를 통해 Map에 저장된 모든 항목을 하나의 Set으로 다룰 수 있게 된다.
동작 원리
- entrySet() 메서드는 Map에 저장된 key-value 쌍을 Set<Map.Entry<K,V>> 형태로 반환한다.
- Set이므로 중복된 엔트리는 없으며, 순서는 Map의 구현에 따라 달라진다.
- 예를 들어, HashMap은 순서를 보장하지 않지만, LinkedHashMap은 입력 순서를, TreeMap은 정렬된 순서를 보장한다.
사용법
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
Map을 순회하는 방법
entrySet()을 이용한 순회
- entrySet()을 사용하면 Map의 key와 value를 동시에 얻을 수 있다.
- 이 방법은 key와 value 모두 필요한 경우 가장 효율적이다.
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
// Stream API 이용
map.entrySet().stream()
.forEach(entry -> System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()));
keySet()을 이용한 순회
- keySet() 메서드를 사용하면 Map의 모든 키를 Set으로 반환받을 수 있다.
- 이 방법은 key만 필요할 때 유용하지만, value가 필요할 경우에는 get()을 사용해야 하므로 성능 면에서 불리할 수 있다.
for (String key : map.keySet()) {
System.out.println("Key: " + key + ", Value: " + map.get(key));
}
// Stream API 이용
map.keySet().stream()
.forEach(key -> System.out.println("Key: " + key + ", Value: " + map.get(key)));
- 주의할 점은 get(key) 메서드를 호출하면서 추가적인 작업이 발생하기 때문에 성능이 떨어질 수 있다는 것이다.
values()를 이용한 순회
- values() 메서드를 사용하면 Map에 있는 모든 값을 Collection으로 반환받을 수 있다.
- value만 필요할 때 유용하다.
for (Integer value : map.values()) {
System.out.println("Value: " + value);
}
// Stream API 이용
map.values().stream()
.forEach(value -> System.out.println("Value: " + value));
forEach()를 이용한 순회
- Map은 forEach() 메서드를 제공하여 키와 값을 쉽게 순회할 수 있다.
- 이 방식은 코드가 간결하고 직관적이다.
map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));
'Java' 카테고리의 다른 글
Hashtable의 정의와 구조 (0) | 2024.12.04 |
---|---|
리스트 값을 교체할까, 추가할까? 자바 리스트 처리 방식의 이해 (1) | 2024.09.25 |
@Nullable 어노테이션, warning: unknown enum constant When.MAYBE ! (0) | 2024.09.23 |
Java 문자열 비교, String의 "equals" 함수 알고 사용하자 (0) | 2024.09.23 |
Transaction 과 예외 처리의 관계 (0) | 2024.06.11 |