Java 8에서 소개된 것중 하나로 연속된 처리 작업을 선언적으로 표현하는데 사용됩니다.
List<Member> members = new ArrayList<>();
List<Integer> memberIds = members.stream()
.map(member -> member.getId())
.collect(Collectors.toList());
Stream 파이프라인은 다음과 같이 구성되어 있습니다.
Stream은 배열, 리스트, 파일 등의 데이터 소스를 처리할.
데이터 소스는 Stream 객체로 변환.
위 코드에서 데이터 소스는
members
입니다.
데이터 소스에서 변환된 Stream 객체는 중간 연산자를 통해 필터링, 매핑, 정렬 등의 중간 처리를 수행.
중간 연산자는 연속해서 호출 가능.
각 중간 연산자는 Stream 객체를 반환.
위 코드에서 중간 연산자는
.map(member -> member.getId())
입니다.
중간 연산자를 통해 변환된 Stream 객체는 최종 연산자를 통해 집계, 수집, 출력 등의 최종 처리를 수행.
최종 연산자는 마지막에 한 번만 호출 가능.
최종 연산자는 Stream 객체를 반환하지 않음.
위 코드에서 중간 연산자는
.collect(Collectors.toList())
입니다.