자바 8 부터 람다식과 함께 사용하던 코드를 더 간결하고 강력하게 만들 수 있는 함수형 인터페이스들이 추가됐습니다.
따라서 대표적인 함수형 메서드를 정리해 보았습니다.
미리 들어가기에 앞서 람다 Stream 사용 시 단순 for 문 혹은 while 문 보다 성능이 떨어집니다.
또한 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어트릴 수 있습니다.
일단 Stream 이란
먼저 유용한 람다식 함수들을 배우기 전에 Stream 이란 무엇인지 간단하게 설명하겠습니다.
Stream 은 데이터(리스트, 배열 등) 를 한줄(Stream)로 흘려보내면서 필요한 작업(변환,필터링등) 을 수행하는 기능입니다.
쉽게 말해, 데이터를 하나씩 순서대로 흘려보내면서 변형하는 파이프라인 같은 것입니다.
데이터 자체를 변경하지 않고, 가공해서 새로운 결과물을 만들어 냅니다.
map
모든 요소를 변환해서 새로운 값으로 만들고 싶을 때 사용합니다.
Stream 과 함께 사용해야 합니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class MapExample {
public static void main(String[] args) {
List<Integer> scores = Arrays.asList(70, 80, 90);
// 모든 점수를 5점씩 증가시키기
List<Integer> newScores = scores.stream()
.map(score -> score + 5)
.collect(Collectors.toList());
System.out.println(newScores);
}
}
실행결과
[75, 85, 95]
filter
특정 조건을 만족하는 요소만 선택할 때 사용합니다.
80점 이상인 점수만 출력
scores.stream()
.filter(score -> score >= 80)
.forEach(System.out::println);
실행결과
80
90
sorted
리스트를 오름차순 또는 내림차순으로 정렬할 때 사용합니다.
scores.stream()
.sorted() // 오름차순 정렬
.forEach(System.out::println);
실행 결과
70
80
90
reduce
리스트의 모든 요소를 하나의 값으로 합칠 때 사용합니다.
모든 점수의 합 구하기
int total = scores.stream()
.reduce(0, (a, b) -> a + b);
System.out.println("총점: " + total);
실행결과
총점: 240
'Java' 카테고리의 다른 글
ConcurrentHashMap 에 대하여 (3) | 2025.06.06 |
---|---|
자바의 반복문 종류 (1) | 2025.02.04 |
Java 의 Call by Value, Call by Reference (1) | 2025.01.06 |
간단한 에러 출력 방법과 문제점 (0) | 2025.01.02 |
자바의 람다 표현식 (1) | 2024.12.26 |