[Java] Map(HashMap) for문으로 탐색/순회
June 03, 2024
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