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 |
|---|---|---|
| 2351 | 2026. 04. 07. | Java 23 Gatherers API 실전 가이드 - Stream 중간 연산을 직접 정의하는 방법 |
| 2337 | 2026. 04. 06. | Java 24 Structured Concurrency 실전 가이드 - StructuredTaskScope로 안전한 동시성 구현 |
| 2322 | 2026. 04. 05. | Java 24 Compact Object Headers로 힙 메모리 25% 절약하기 |
| 2298 | 2026. 04. 05. | Java 24 Stream Gatherers 실전 활용법: 커스텀 중간 연산 만들기 |
| 2297 | 2026. 04. 05. | Java 25 Structured Concurrency 실전 가이드: StructuredTaskScope 완전 정복 |
| 2270 | 2026. 04. 04. | Java 21-23 패턴 매칭과 Record Patterns: switch문의 혁명적 진화 |
| 2269 | 2026. 04. 04. | Java 21 Virtual Threads 완벽 가이드: 기존 스레드 대비 100배 성능 향상 달성하기 |
| 2201 | 2026. 02. 11. | 모던 Java 빌드 도구 비교: Gradle vs Maven 2025 |
| 2200 | 2026. 02. 11. | Java Stream API 고급 패턴과 성능 최적화 |
| 2199 | 2026. 02. 11. | JVM 메모리 튜닝과 GC 최적화 완벽 가이드 |