Java 8에 도입된 Stream API는 객체 컬렉션을 처리하는 데 사용됩니다. Java의 스트림은 원하는 결과를 생성하기 위해 파이프라인을 사용할 수 있는 다양한 메서드를 지원하는 일련의 개체입니다.
Java에서 스트림 사용
Java에서 Stream의 용도는 다음과 같습니다.
- Stream API는 객체의 컬렉션을 표현하고 처리하는 방법입니다.
- 필터링, 매핑, 축소 및 정렬과 같은 작업을 수행할 수 있습니다.
Java 스트림을 생성하는 방법?
Java Stream Creation은 Java Stream의 기능을 고려하기 전 가장 기본적인 단계 중 하나입니다. 다음은 Java Stream을 선언하는 방법에 대한 구문입니다.
통사론
Stream stream;>
여기서 T는 선언에 따라 클래스, 객체 또는 데이터 유형입니다.
자바 스트림 기능
Java 스트림의 기능은 다음과 같습니다.
- 스트림은 데이터 구조가 아니라 컬렉션, 배열 또는 I/O 채널에서 입력을 받습니다.
- 스트림은 원래 데이터 구조를 변경하지 않으며 파이프라인 방식에 따라 결과만 제공합니다.
- 각 중간 작업은 느리게 실행되고 결과적으로 스트림을 반환하므로 다양한 중간 작업을 파이프라인할 수 있습니다. 터미널 작업은 스트림의 끝을 표시하고 결과를 반환합니다.
스트림의 다양한 작업
Streams에는 두 가지 유형의 작업이 있습니다.
- 중간 작업
- 작업 종료
중간 작업

중간 작업은 여러 메서드가 연속적으로 연결되는 작업 유형입니다.
중간작업의 특징
- 메소드는 서로 연결되어 있습니다.
- 중간 작업은 스트림을 다른 스트림으로 변환합니다.
- 이는 한 방법으로 데이터를 필터링하고 처리 후 다른 방법으로 전달하는 필터링 개념을 가능하게 합니다.
자바 스트림의 이점
아래에 언급된 것처럼 Java에서 Stream을 사용하면 몇 가지 이점이 있습니다.
- 저장 공간 없음
- 기능 파이프라인
- 게으름
- 무한할 수 있다
- 병렬화 가능
- 컬렉션, 배열, 파일 라인, 스트림의 메서드, IntStream 등에서 생성될 수 있습니다.
중요한 중간 작업
아래에 언급된 몇 가지 중간 작업이 있습니다.
1. 지도()
map 메소드는 이 스트림의 요소에 주어진 함수를 적용한 결과로 구성된 스트림을 반환하는 데 사용됩니다.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. 필터()
필터 메소드는 인수로 전달된 조건자에 따라 요소를 선택하는 데 사용됩니다.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. 정렬()
sorted 메소드는 스트림을 정렬하는 데 사용됩니다.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> 터미널 운영
터미널 작업은 결과를 반환하는 작업 유형입니다. 이러한 작업은 더 이상 처리되지 않고 최종 결과 값을 반환합니다.
중요한 터미널 운영
아래에 언급된 몇 가지 터미널 작업이 있습니다.
1. 수집()
Collect 메소드는 스트림에서 수행된 중간 작업의 결과를 반환하는 데 사용됩니다.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. 각각()
forEach 메소드는 스트림의 모든 요소를 반복하는 데 사용됩니다.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. 감소()
Reduce 메소드는 스트림의 요소를 단일 값으로 줄이는 데 사용됩니다. 축소 메소드는 BinaryOperator를 매개변수로 사용합니다.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
여기서 ans 변수에는 초기값으로 0이 할당되고 여기에 i가 추가됩니다.
메모: Intermediate Operations는 Lazy Evaluation 개념을 기반으로 실행되며, 이는 모든 메소드가 다음 메소드로 이동하기 전에 고정된 값(터미널 작업)을 반환하도록 보장합니다.
자바 스트림의 예
자바
자바에서 문자열의 동등성
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> >public> static> void> main(String args[])> >{> >// create a list of integers> >List number = Arrays.asList(>2>,>3>,>4>,>5>);> >// demonstration of map method> >List square> >= number.stream()> >.map(x ->x * x)> >.collect(Collectors.toList());> >// create a list of String> >List names = Arrays.asList(> >'Reflection'>,>'Collection'>,>'Stream'>);> >// demonstration of filter method> >List result> >= names.stream()> >.filter(s ->s.startsWith(>'S'>))> >.collect(Collectors.toList());> > >System.out.println(result);> >// demonstration of sorted method> >List show> >= names.stream()> >.sorted()> >.collect(Collectors.toList());> > >System.out.println(show);> >// create a list of integers> >List numbers> >= Arrays.asList(>2>,>3>,>4>,>5>,>2>);> >// collect method returns a set> >Set squareSet> >= numbers.stream()> >.map(x ->x * x)> >.collect(Collectors.toSet());> > >System.out.println(squareSet);> >// demonstration of forEach method> >number.stream()> >.map(x ->x * x)> >.forEach(y ->System.out.println(y));> >// demonstration of reduce method> >int> even> >= number.stream()> >.filter(x ->x %>2> ==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }> |
>
>
산출
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Java Stream의 중요 사항/관찰 사항
- 스트림은 소스와 함께 결합된(파이프라인된) 0개 이상의 중간 메서드와 설명된 메서드에 따라 소스에서 얻은 개체를 처리하는 터미널 메서드로 구성됩니다.
- 스트림은 개체의 원래 값을 변경하지 않고 파이프라인 방법에 따라 요소를 계산하는 데 사용됩니다.