반응형
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 |
Tags
- 인텔리제이
- date
- input
- replace
- 자바
- 이탈리아
- 자바스크립트
- js
- Button
- vscode
- 문자열
- CMD
- html
- Array
- HashMap
- map
- javascript
- IntelliJ
- Java
- list
- 정규식
- json
- Eclipse
- ArrayList
- Visual Studio Code
- 이클립스
- 배열
- table
- string
- CSS
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