Stream
함수Java의 Stream
함수는 Java 8에서 도입된 기능으로, 컬렉션(리스트, 배열 등)에 저장된 데이터를 간결하고 가독성 있게 처리할 수 있는 방법을 제공한다. 스트림을 사용하면 반복문 없이 선언적 방식으로 데이터를 다룰 수 있다.
아래는 스트림을 사용하여 리스트에서 짝수를 필터링하고, 각 요소에 2를 곱한 후 결과를 출력하는 간단한 예시이다:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Stream을 이용해 짝수를 필터링하고, 각 숫자에 2를 곱한 후, 출력
List<Integer> evenNumbersMultipliedByTwo = numbers.stream() // 스트림 생성
.filter(n -> n % 2 == 0) // 중간 연산: 필터링
.map(n -> n * 2) // 중간 연산: 매핑
.collect(Collectors.toList()); // 최종 연산: 리스트로 수집
System.out.println(evenNumbersMultipliedByTwo); // [4, 8, 12, 16, 20]
}
}
중간 연산
filter(Predicate)
: 조건에 맞는 요소들만 선택한다.map(Function)
: 각 요소에 함수를 적용하여 변환한다.sorted()
: 요소들을 정렬한다.distinct()
: 중복된 요소를 제거한다.limit(long)
: 스트림에서 제공된 크기까지의 요소를 유지한다.최종 연산
collect()
: 스트림을 리스트, 세트, 맵 등으로 변환한다.forEach(Consumer)
: 각 요소에 대해 작업을 수행한다.reduce(BinaryOperator)
: 요소들을 조합하여 단일 결과를 생성한다.count()
: 요소의 개수를 반환한다.anyMatch(Predicate)
, allMatch(Predicate)
, noneMatch(Predicate)
: 스트림의 조건에 대한 매칭 결과를 반환한다.Java의 Stream
API는 컬렉션 데이터를 쉽게 조작하고 처리할 수 있는 방법을 제공하며, 선언적이고 함수형 프로그래밍 스타일의 코드를 작성할 수 있게 해준다. Stream
은 반복적인 데이터 처리 코드를 간결하게 만들어주고, 데이터 흐름을 직관적으로 표현할 수 있는 도구이다.