logo

Java에서 스트리밍

Java 8에 도입된 Stream API는 객체 컬렉션을 처리하는 데 사용됩니다. Java의 스트림은 원하는 결과를 생성하기 위해 파이프라인을 사용할 수 있는 다양한 메서드를 지원하는 일련의 개체입니다.

Java에서 스트림 사용

Java에서 Stream의 용도는 다음과 같습니다.

  1. Stream API는 객체의 컬렉션을 표현하고 처리하는 방법입니다.
  2. 필터링, 매핑, 축소 및 정렬과 같은 작업을 수행할 수 있습니다.

Java 스트림을 생성하는 방법?

Java Stream Creation은 Java Stream의 기능을 고려하기 전 가장 기본적인 단계 중 하나입니다. 다음은 Java Stream을 선언하는 방법에 대한 구문입니다.



통사론

Stream stream;>

여기서 T는 선언에 따라 클래스, 객체 또는 데이터 유형입니다.

자바 스트림 기능

Java 스트림의 기능은 다음과 같습니다.

  • 스트림은 데이터 구조가 아니라 컬렉션, 배열 또는 I/O 채널에서 입력을 받습니다.
  • 스트림은 원래 데이터 구조를 변경하지 않으며 파이프라인 방식에 따라 결과만 제공합니다.
  • 각 중간 작업은 느리게 실행되고 결과적으로 스트림을 반환하므로 다양한 중간 작업을 파이프라인할 수 있습니다. 터미널 작업은 스트림의 끝을 표시하고 결과를 반환합니다.

스트림의 다양한 작업

Streams에는 두 가지 유형의 작업이 있습니다.

  1. 중간 작업
  2. 작업 종료

중간 작업

자바 스트림 작업

중간 작업은 여러 메서드가 연속적으로 연결되는 작업 유형입니다.

중간작업의 특징

  1. 메소드는 서로 연결되어 있습니다.
  2. 중간 작업은 스트림을 다른 스트림으로 변환합니다.
  3. 이는 한 방법으로 데이터를 필터링하고 처리 후 다른 방법으로 전달하는 필터링 개념을 가능하게 합니다.

자바 스트림의 이점

아래에 언급된 것처럼 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의 중요 사항/관찰 사항

  1. 스트림은 소스와 함께 결합된(파이프라인된) 0개 이상의 중간 메서드와 설명된 메서드에 따라 소스에서 얻은 개체를 처리하는 터미널 메서드로 구성됩니다.
  2. 스트림은 개체의 원래 값을 변경하지 않고 파이프라인 방법에 따라 요소를 계산하는 데 사용됩니다.