자바 8부터 추가된 Stream API는 컬렉션, 배열 등의 데이터 소스를 다룰 수 있는 기능을 제공함
Stream은 함수형 프로그래밍을 지원하며, 여러 메소드 체인을 이용하여 손쉽게 데이터 처리를 할 수 있음
Stream API를 사용하면 루프를 통한 반복 작업을 줄일 수 있어 코드 가독성과 유지보수성을 향상시킬 수 있음
연속적인 처리 가능
손쉬운 병렬처리 가능
중간 처리와 최종 처리로 구분
지연 처리(lazy evaluation) 지원
Stream API는 java.util.stream 패키지에 정의되어 있음
Stream에 대한 중간 처리 작업을 수행하는 연산
중간 연산은 다른 스트림을 반환하므로, 연속해서 다른 중간 연산 또는 최종 연산을 수행할 수 있음
대표적인 중간 연산으로는 filter(), map(), sorted() 등이 있음
Stream에 대한 최종 처리 작업을 수행하는 연산
최종 연산은 Stream을 닫으며, 다른 연산을 더 이상 수행할 수 없음
대표적인 최종 연산으로는 count(), collect(), forEach() 등이 있음
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
List<String> result = list.stream()
.filter(s -> s.length() >= 5)
.collect(Collectors.toList());
System.out.println(result);
}
}
List 객체를 대상으로 Stream을 생성
filter() 메소드를 이용하여 길이가 5 이상인 문자열만 필터링
collect() 메소드를 이용하여 필터링된 문자열을 새로운 List로 반환
출력 결과
[apple, banana, cherry, elderberry]