Contents
see List3.1. Get Stream
먼저 Stream API를 사용하려면 stream을 얻어와야 합니다. 얻는 방법은 다음과 같습니다.
Arrays.asList(1,2,3).stream(); // (1) Arrays.asList(1,2,3).parallelStream(); // (2)
콜렉션 관련 객체라면 stream을 얻어올 수 있습니다. (1)번 방법은 일반적인 stream을 가져오는 것이고 (2)번 방법은 병렬로 stream을 가져옵니다.
3.2. Working Stream
실제로 얻어온 stream에 연산을 해봅시다. 주요하게 쓰이는 몇가지 API만 살펴봅시다.
3.2.1. forEach
stream의 요소를 순회해야 한다면 forEach를 활용할 수 있습니다.
Arrays.asList(1,2,3).stream() .forEach(System.out::println); // 1,2,3
3.2.2. map
stream의 개별 요소마다 연산을 할 수 있습니다. 아래의 코드는 리스트에 있는 요소의 제곱 연산을 합니다.
Arrays.asList(1,2,3).stream() .map(i -> i*i) .forEach(System.out::println); // 1,4,9
3.2.3. limit
stream의 최초 요소부터 선언한 인덱스까지의 요소를 추출해 새로운 stream을 만듭니다.
Arrays.asList(1,2,3).stream() .limit(1) .forEach(System.out::println); // 1
3.2.4. skip
stream의 최초 요소로부터 선언한 인덱스까지의 요소를 제외하고 새로운 stream을 만듭니다.
Arrays.asList(1,2,3).stream() .skip(1) .forEach(System.out::println); // 2,3
3.2.5. filter
stream의 요소마다 비교를 하고 비교문을 만족하는 요소로만 구성된 stream을 반환합니다.
Arrays.asList(1,2,3).stream() .filter(i-> 2>=i) .forEach(System.out::println); // 1,2
3.2.6. flatMap
stream의 내부에 있는 객체들을 연결한 stream을 반환합니다.
Arrays.asList(Arrays.asList(1,2),Arrays.asList(3,4,5),Arrays.asList(6,7,8,9)).stream() .flatMap(i -> i.stream()) .forEach(System.out::println); // 1,2,3,4,5,6,7,8,9
3.2.7. reduce
stream을 단일 요소로 반환합니다.
Arrays.asList(1,2,3).stream() .reduce((a,b)-> a-b) .get(); // -4
이 코드는 조금 설명이 필요할 것 같습니다. 우선, 첫번째 연산으로 1과 2가 선택되고 계산식은 앞의 값에서 뒤의 값을 빼는 것이기 때문에 결과는 -1이 됩니다. 그리고 이상태에서 -1과 3이 선택되고 계산식에 의해 -1-3이 되기 때문에 결과로 -4가 나옵니다. 뒤로 추가 요소가 있다면 차근차근 앞에서부터 차례대로 계산식에 맞춰 계산하면 됩니다.
3.2.8. collection
아래의 코드들은 각각의 메소드로 콜렉션 객체를 만들어서 반환합니다.
Arrays.asList(1,2,3).stream() .collect(Collectors.toList()); Arrays.asList(1,2,3).stream() .iterator();
java
| No | 작성일 | Title |
|---|---|---|
| 2133 | 2026. 02. 11. | Virtual Thread 실전 활용: 동시성 프로그래밍의 혁명 |
| 2132 | 2026. 02. 11. | Java 23 새로운 기능 완전 정리: Pattern Matching의 진화 |
| 2023 | 2025. 11. 30. | Java 직렬화와 JSON 처리 - Jackson 활용 |
| 2022 | 2025. 11. 30. | Java 테스트 - JUnit 5와 Mockito |
| 2021 | 2025. 11. 30. | Java 함수형 프로그래밍 - Lambda와 Method Reference |
| 2020 | 2025. 11. 30. | Lombok 활용 가이드 - 보일러플레이트 제거 |
| 2019 | 2025. 11. 30. | Java Record와 Sealed Class 활용 |
| 2018 | 2025. 11. 30. | 효과적인 Java 예외 처리 전략 |
| 2017 | 2025. 11. 30. | JVM 메모리 구조와 GC 튜닝 |
| 2016 | 2025. 11. 30. | Java 동시성 프로그래밍 - CompletableFuture |