Hashmap의 loop 사용법
HashMap의 loop를 사용하는 방법이다.
아래 예제는 다음과 같은 값이 있다고 가정한다.
Map<String, Integer> map = new HashMap<>();
map.put("john", 1);
map.put("mathew", 2);
map.put("jason", 3);
map.put("peter", 4);
1. for loop 사용하기
1.1. entrySet() 사용
entrySet을 사용하여 Map을 순회
public void iterateUsingEntrySet(Map<String, Integer> map) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
1.2. keySet() 사용
keySet을 사용하여 Map의 모든 key를 가져와서 Map을 순회
public void iterateUsingKeySetAndForeach(Map<String, Integer> map) {
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
}
1.3. values() 사용하여 값 반복하기
Map의 값에만 관심이 있다면
public void iterateValues(Map<String, Integer> map) {
for (Integer value : map.values()) {
System.out.println(value);
}
}
2. Iterator
2.1. Iterator와 entrySet()
Iterator와 entrySet을 사용하여 Map을 순회
public void iterateUsingIteratorAndEntry(Map<String, Integer> map) {
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
2.2. Iterator와 keySet()
Iterator와 keySet을 사용하여 Map을 순회
public void iterateUsingIteratorAndKeySet(Map<String, Integer> map) {
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + ":" + map.get(key));
}
}
2.3 Iterator와 values() 사용
Iterator와 values를 사용하여 값을 순회
public void iterateUsingIteratorAndValues(Map<String, Integer> map) {
Iterator<Integer> iterator = map.values().iterator();
while (iterator.hasNext()) {
Integer value = iterator.next();
System.out.println("value :" + value);
}
}
3. Lambda와 Stream API
3.1 forEach()와 lambda
Java 8의 forEach를 사용
public void iterateUsingLambda(Map<String, Integer> map) {
map.forEach((k, v) -> System.out.println((k + ":" + v)));
}
Map의 key를 순회
public void iterateByKeysUsingLambda(Map<String, Integer> map) {
map.keySet().forEach(k -> System.out.println((k + ":" + map.get(k))));
}
values()를 사용
public void iterateValuesUsingLambda(Map<String, Integer> map) {
map.values().forEach(v -> System.out.println(("value: " + v)));
}
3.2 Stream API
stream API를 사용
public void iterateUsingStreamAPI(Map<String, Integer> map) {
map.entrySet().stream()
.forEach(e -> System.out.println(e.getKey() + ":" + e.getValue()));
}
출처: https://www.baeldung.com/java-iterate-map
반응형