Java Stream API를 사용하다 보면 map()과 forEach()를 자주 만나게 된다. 두 메서드는 비슷해 보이지만 목적과 사용하는 상황이 다르다. 이 글에서는 map()과 forEach()의 차이를 실제 예제와 함께 정리한다.
List<String> names = Arrays.asList("홍길동", "이순신", "강감찬");
List<Integer> nameLengths = names.stream()
.map(String::length) // 각 이름의 길이로 변환
.collect(Collectors.toList()); // 결과를 리스트로 수집
List<String> names = Arrays.asList("홍길동", "이순신", "강감찬");
names.stream()
.forEach(name -> System.out.println(name)); // 각 요소를 출력
구분map()forEach()
용도 | 변환(Transformation) | 소비(Consumption) |
리턴값 | 변환된 스트림 | 없음(void) |
연산종류 | 중간 연산 | 최종 연산 |
주 사용처 | 값 가공/타입 변경/파이프라인 | 출력/저장/외부 연동 등 부수효과 |
보통 데이터를 변환한 후, 그 결과를 소비해야 할 때 두 메서드를 조합해서 사용한다.
List<String> names = Arrays.asList("홍길동", "이순신", "강감찬");
names.stream()
.map(String::toUpperCase) // 모든 이름을 대문자로 변환
.forEach(System.out::println); // 변환된 값을 출력
각 메서드의 역할과 용도를 잘 구분해서 사용해야 코드를 더 읽기 쉽고 유지보수하기 편하다.
[Java] Stream 사용시 toList()와 collect(Collectors.toList())의 차이 점 (0) | 2024.12.17 |
---|---|
[Java] 날짜타입을 포맷 설정 후 문자열로 변환 (LocalDate, DateTimeFormatter) (0) | 2024.11.23 |