반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSS
- html
- Array
- Eclipse
- table
- javascript
- string
- date
- 문자열
- Button
- 이클립스
- 이탈리아
- list
- 자바스크립트
- ArrayList
- 배열
- IntelliJ
- 인텔리제이
- 자바
- input
- json
- Java
- js
- HashMap
- map
- 정규식
- Visual Studio Code
- CMD
- replace
- vscode
Archives
- Today
- Total
어제 오늘 내일
[Java HashMap] forEach() 메소드와 람다식 순회 본문
Java 8부터 HashMap
은 forEach()
메소드를 제공해 람다식을 사용한 간결한 순회가 가능해졌습니다.
기존의 keySet()
, entrySet()
을 이용한 반복보다 코드가 훨씬 짧아지고 가독성이 좋아집니다.
1. 기본 forEach() 사용
import java.util.HashMap;
public class HashMapForEachBasic {
public static void main(String[] args) {
HashMap<String, Integer> scores = new HashMap<>();
scores.put("kim", 90);
scores.put("lee", 80);
scores.put("park", 95);
scores.forEach((k, v) -> System.out.println(k + " : " + v));
}
}
실행 결과
kim : 90
lee : 80
park : 95
forEach()
는 (key, value)
를 인자로 받는 BiConsumer
를 사용합니다.
2. 조건부 출력
import java.util.HashMap;
public class HashMapForEachCondition {
public static void main(String[] args) {
HashMap<String, Integer> scores = new HashMap<>();
scores.put("kim", 90);
scores.put("lee", 70);
scores.put("park", 95);
scores.forEach((k, v) -> {
if (v >= 80) {
System.out.println(k + " passed");
}
});
}
}
실행 결과
kim passed
park passed
람다식 안에서 조건을 걸어 원하는 데이터만 처리할 수 있습니다.
3. 값 가공하기
import java.util.HashMap;
public class HashMapForEachTransform {
public static void main(String[] args) {
HashMap<String, Integer> scores = new HashMap<>();
scores.put("kim", 90);
scores.put("lee", 80);
scores.put("park", 95);
scores.forEach((k, v) -> System.out.println(k.toUpperCase() + " 점수 = " + (v + 5)));
}
}
실행 결과
KIM 점수 = 95
LEE 점수 = 85
PARK 점수 = 100
람다식 안에서 키와 값을 자유롭게 가공할 수 있습니다.
4. 병렬 처리: forEach vs forEachOrdered
import java.util.*;
import java.util.stream.*;
public class HashMapForEachParallel {
public static void main(String[] args) {
Map<String, Integer> scores = new HashMap<>();
scores.put("kim", 90);
scores.put("lee", 80);
scores.put("park", 95);
// 병렬 스트림 + forEach (순서 보장 없음)
scores.entrySet().parallelStream()
.forEach(e -> System.out.println("parallel: " + e));
// 병렬 스트림 + forEachOrdered (순서 보장)
scores.entrySet().parallelStream()
.forEachOrdered(e -> System.out.println("ordered: " + e));
}
}
forEach()
는 순서를 보장하지 않지만, forEachOrdered()
를 쓰면 병렬 스트림에서도 입력 순서를 유지할 수 있습니다.
결론
forEach((k,v) -> {...})
→ 람다식 기반 간단 순회- 조건부 처리, 값 변환 등 자유롭게 활용 가능
- 병렬 스트림과 함께 쓰면 대량 데이터 처리 성능 향상 가능
반응형
'IT > Java' 카테고리의 다른 글
[Java HashMap] clear(), size(), isEmpty() 메소드 정리 (0) | 2025.10.18 |
---|---|
[Java HashMap] keySet(), values(), entrySet() 활용법 (0) | 2025.10.17 |
[Java HashMap] merge() 메소드 정리 및 활용 (0) | 2025.10.17 |
[Java HashMap] compute(), computeIfAbsent(), computeIfPresent() 메소드 정리 (0) | 2025.10.16 |
[Java HashMap] replace()와 replaceAll() 메소드 정리 (0) | 2025.10.12 |
Comments