스트림 API 기본 개념
스트림 API란?
import java.util.List;
import java.util.stream.Stream;
public class StreamStartMain {
public static void main(String[] args) {
List<String> names = List.of("Apple", "Banana", "Berry", "Tomato");
//"B"로 시작하는 이름만 필터 후 대문자로 바꿔서 리스트 수집
Stream<String> stream = names.stream(); //스트림 생성
List<String> result = stream.filter(name -> name.startsWith("B")) //중간 연산
.map(s -> s.toUpperCase()) //중간 연산
.toList(); //최종 연산
//외부 반복
for (String s : result) {
System.out.println(s);
}
//forEach 내부 반복
names.stream()
.filter(name -> name.startsWith("B"))
.map(s -> s.toUpperCase())
.forEach(x -> System.out.println(x));
//메서드 참조
names.stream()
.filter(name -> name.startsWith("B"))
.map(String::toUpperCase) //임의 객체의 인스턴스 메서드 참조(매개변수 참조)
.forEach(System.out::println); //특정 객체의 인스턴스 메서드 참조
}
}스트림 API 특징
1. 데이터 소스를 변경하지 않음 (Immutable)
2. 일회성
3. 파이프라인 구성
4. 지연 연산
👆 지연 연산과 최적화
Last updated