컬렉션 변환·필터·집계를 선언적으로 연결합니다.
Stream은 데이터 저장소가 아니라 한 번 소비되는 처리 파이프라인입니다. filter, map은 중간 연산이고 collect, count, reduce 같은 최종 연산이 실행을 시작합니다.
예제에서 items.stream().filter(...).map(...).collect(toList()) 부분부터 찾으세요. 선언 타입, 실제 객체와 반환값을 한 줄씩 따라가면서 컴파일 단계에서 잡히는 문제와 실행 중 생기는 문제를 구분하세요.
중간 연산은 lazy하며 stream은 재사용할 수 없습니다. checked exception과 상태 변경이 많은 로직은 일반 반복문이 더 명확할 수 있습니다.
대량 데이터에서 무심코 목록으로 모두 수집하지 말고 원본 데이터 접근 방식과 병목을 함께 확인합니다.
현재 코드를 먼저 실행해 출력과 타입 흐름을 확인한 뒤 80점 이상 이름과 평균을 구하세요.
forEach의 실행 순서에 의존하거나 parallelStream에서 공유 상태를 변경하지 마세요.
직접 바꿔보세요80점 이상 이름과 평균을 구하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.