Java

Map의 EntrySet(), 그거 어떻게 쓰는건데 ! map 을 순회하는 방법

제주니어 2024. 9. 24. 23:39

의미
  • 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));