반응형
HashMap Traversal Methods

1. entrySet() 이용

entrySet()HashMap의 모든 키-값 쌍을 Map.Entry 객체로 반환합니다.

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}

특징

  • 구조: Map.Entry 객체를 통해 키와 값을 동시에 접근.
  • 장점:
    • 키와 값 모두를 한 번에 접근할 수 있어 효율적.
    • 코드가 간결하고 가독성이 높음.
  • 단점: entrySet()Set<Map.Entry>를 반환하므로 추가적인 객체를 생성.

2. keySet() 이용

keySet()HashMap의 모든 키를 Set으로 반환합니다.

for (String key : map.keySet()) {
    System.out.println("Key: " + key + ", Value: " + map.get(key));
}

특징

  • 구조: 키를 순회하며 각 키를 이용해 get()으로 값을 가져옴.
  • 장점:
    • 키만 필요할 때 간단하게 사용 가능.
  • 단점:
    • 키를 순회하면서 get() 메서드를 호출하므로, 성능이 상대적으로 떨어질 수 있음(특히 큰 HashMap에서는 비효율적).

3. values() 이용

values()HashMap의 모든 값을 Collection으로 반환합니다.

for (Integer value : map.values()) {
    System.out.println("Value: " + value);
}

특징

  • 구조: 값만 순회하며 접근.
  • 장점:
    • 값만 필요할 때 간단히 사용 가능.
  • 단점:
    • 값에 대응하는 키를 얻을 수 없음.

4. Java 8+ forEach() 이용

Java 8부터는 HashMap에 대해 forEach() 메서드를 사용할 수 있습니다.

map.forEach((key, value) -> {
    System.out.println("Key: " + key + ", Value: " + value);
});

특징

  • 구조: 람다 표현식을 통해 키와 값에 동시에 접근.
  • 장점:
    • 최신 스타일의 코드로 가독성 높음.
    • 병렬 처리를 지원하는 스트림과 쉽게 결합 가능.
  • 단점:
    • Java 8 이상에서만 사용 가능.

5. Iterator 이용

Iterator를 사용해 entrySet()이나 keySet()을 탐색합니다.

Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, Integer> entry = iterator.next();
    System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}

특징

  • 구조: Iterator를 통해 순회하며 요소 제거도 가능.
  • 장점:
    • 순회 중 안전하게 요소를 제거할 수 있음.
  • 단점:
    • 코드가 다소 장황해짐.

차이점 요약

순회 방법 키 접근 값 접근 성능 사용 시기
entrySet() 가능 가능 효율적 키와 값을 동시에 접근할 때
keySet() 가능 가능 비효율적 키만 필요하거나 간단한 순회 시
values() 불가능 가능 효율적 값만 필요한 경우
forEach() 가능 가능 효율적 람다를 활용하여 코드 간결화 시
Iterator 가능 가능 보통 순회 중 요소를 제거해야 할 때

추천

  • 키와 값을 모두 접근해야 한다면 entrySet()이나 forEach()가 가장 효율적.
  • 키만 필요하면 keySet(), 값만 필요하면 values().
  • 요소 제거를 포함한 순회는 Iterator를 사용.
반응형

'프로그래밍 > java' 카테고리의 다른 글

HashMap 순회 에러 방지  (0) 2025.01.02
hashset, treeset 비교  (0) 2024.12.22
hashmap vs treemap 비교  (1) 2024.12.21
[java]keystore 경로, list 확인  (0) 2023.02.02
이클립스 주요 단축키  (0) 2022.12.30

+ Recent posts