Java에서 HashMap 등, Map의 모든 요소들을 for문으로 탐색, 순회하는 방법에 대해서 알아보겠습니다.

1. for문과 Entry로 Map 순회

Map.entrySet()는 Entry 리스트를 리턴하며, Entry는 Map 요소의 key-value 쌍을 의미합니다.

아래와 같이 Entry 리스트를 순회하면서, Map의 모든 key와 value를 탐색할 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {

        Map<String, Integer> people = new HashMap<>();
        people.put("Alice", 30);
        people.put("Bob", 25);
        people.put("Charlie", 33);

        for (Map.Entry<String, Integer> entry : people.entrySet()) {
            String name = entry.getKey();
            Integer age = entry.getValue();
            System.out.println(name + ": " + age);
        }
    }
}

Output:

Bob: 25
Alice: 30
Charlie: 33

2. forEach()로 Map 순회

Map은 forEach() 함수를 제공하며, 아래와 같이 key와 value를 순회할 수 있습니다.

  • forEach((name, age) -> System.out.println(name + ": " + age)) : forEach는 key와 value를 인자로 전달하고 리턴 값이 없는 함수를 인자로 받음
import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {

        Map<String, Integer> people = new HashMap<>();
        people.put("Alice", 30);
        people.put("Bob", 25);
        people.put("Charlie", 33);

        people.forEach((name, age) -> System.out.println(name + ": " + age));
    }
}

Output:

Bob: 25
Alice: 30
Charlie: 33

3. Map의 Key만 순회

Map.keySet()는 Map의 모든 key 값을 갖고 있는 리스트를 리턴합니다.

아래와 같이 key들만 순회할 수 있으며, key 값을 알고 있으면 Map을 통해 value를 가져올 수 있습니다.

  • people.get(name) : Map.get()으로 key를 인자로 전달하여 value 얻음
import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {

        Map<String, Integer> people = new HashMap<>();
        people.put("Alice", 30);
        people.put("Bob", 25);
        people.put("Charlie", 33);

        for (String name : people.keySet()) {
            Integer score = people.get(name);
            System.out.println(name + ": " + score);
        }
    }
}

Output:

Bob: 25
Alice: 30
Charlie: 33

4. Map의 Value만 순회

Map.values()는 Map의 모든 value를 갖고 있는 리스트를 리턴합니다.

아래와 같이 모든 value를 순회할 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {

        Map<String, Integer> people = new HashMap<>();
        people.put("Alice", 30);
        people.put("Bob", 25);
        people.put("Charlie", 33);

        for (Integer age : people.values()) {
            System.out.println(age);
        }
    }
}

Output:

25
30
33

5. Stream의 forEach()로 Map 순회

Stream은 forEach() 함수를 제공합니다.

아래와 같은 방식으로 Stream의 forEach를 이용하여, key와 value를 모두 탐색할 수 있습니다.

  • ketSet()으로 얻은 key의 리스트를 Stream으로 변환
  • Stream의 forEach()로 key를 순회
  • Map에서 key 값으로 value 얻음
import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {

        Map<String, Integer> people = new HashMap<>();
        people.put("Alice", 30);
        people.put("Bob", 25);
        people.put("Charlie", 33);

        people.keySet().stream()
                .forEach(name -> System.out.println(name + ": " + people.get(name)));
    }
}

Output:

Bob: 25
Alice: 30
Charlie: 33