Java 스트림에 대해 알아야 할 모든 것



이 기사에서는 Java에서 최근에 소개 된 패키지 인 Stream in Java를 소개하고 수행 할 수있는 작업에 대해 자세히 설명합니다.

Java 8의 새로운 추가 패키지, java.util.stream이 추가되었습니다. 효율적인 프로그래밍 경험을위한 사용자. 스트림은 여러 메서드를 지원하는 일련의 개체로 정의 할 수 있습니다. 이 기사에서는 Stream in

이 기사에서는 다음 사항에 대해 설명합니다.





Stream In Java에 대한이 기사를 시작하기 전에 몇 가지 중요한 기능을 살펴 보겠습니다.

Java 스트림 : 기능

  • 스트림은 데이터 구조가 아니며 요소를 저장하지 않습니다. 컬렉션, 어레이 또는 I / O 채널은 입력을받는 곳입니다.
  • 스트림의 소스는 작업이 수행 된 후에도 수정되지 않은 상태로 유지됩니다. 예를 들어 스트림을 필터링하면 원래 스트림을 수정하는 대신 필터링 된 요소없이 새 스트림이 생성됩니다.
  • 필터, 축소, 일치, 찾기 등과 같은 집계 작업은 스트림에서 지원됩니다.
  • 게으름은 필요할 때만 코드를 평가하므로 스트림의 특징으로 간주 할 수 있습니다.
  • 스트림에있는 요소의 방문은 스트림의 수명 동안 한 번만 수행 할 수 있습니다. 소스에있는 동일한 요소를 다시 방문하려면 새 스트림을 만들어야합니다.

Java의 스트림에 대한이 기사로 이동



스트림 생성

스트림은 다음 방법으로 생성 할 수 있습니다.

  • 흐름() – 순차 스트림이 반환됩니다.수집소스로 간주됩니다.
  • parallelStream () – 병렬 스트림이 반환됩니다. 컬렉션은 소스로 간주됩니다.
목록 문자열 = Arrays.asList ( 'Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') 필터링 된 목록 = strings.stream (). filter (string->! string. isEmpty ()). collect (Collectors.toList ())

Java의 스트림에 대한이 기사로 이동

스트림 작업 :

중간 작업 :

지도



컬렉션에있는 요소는 인수로 전달 된 조건 자에 따라 다른 개체에 매핑 될 수 있습니다. 다음 예제는 map 방법을 사용하여 숫자의 고유 한 제곱을 표시하는 데 사용됩니다.

목록 num = Arrays.asList (5,4,4,2,3,3) 목록 사각형 = num.stream (). map (y-> y * y) .distinct (). collect (Collectors.toList ())

필터

이 방법을 사용하여 기준에 따라 요소를 제거 할 수 있습니다.

목록 이름 = Arrays.asList ( 'Saturday', 'Sunday', 'Thursday') 목록 res = name.stream (). filter (s-> s.startsWith ( 'S')). collect (Collectors.toList () )

분류

이 방법을 사용하여 스트림을 정렬 할 수 있습니다.

목록 이름 = Arrays.asList ( 'Saturday', 'Sunday', 'Thursday') 목록 res = name.stream (). sorted (). collect (Collectors.toList ())

Java 스트림 : 터미널 작업 :

수집

c에서 연결 목록을 구현하는 방법

수집 작업을 사용하여 스트림 요소에 대한 처리 결과를 결합 할 수 있습니다.

목록 num = Arrays.asList (4,3,2,5,6) Set res = num.stream (). map (y-> y * y) .collect (Collectors.toSet ())

각각

이 메서드는 스트림에있는 모든 요소를 ​​반복하는 데 사용됩니다.

목록 num = Arrays.asList (4,3,2,5) num.stream (). map (x-> x * x) .forEach (y-> System.out.println (y))

줄이다

이 메서드를 사용하여 스트림의 요소를 단일 값으로 줄일 수 있습니다.

목록 num = Arrays.asList (4,3,2,5) int even = num.stream (). filter (x-> x % 2 == 0) .reduce (0, (res, i)-> res + 나는)

변수 res에는 처음에 값 0이 할당되고 i가 추가됩니다.

Java의 스트림에 대한이 기사로 이동

필터링

코드는 stream 메서드를 사용하여 필터링 할 수 있습니다. 다음 예에서는 상품 가격이 필터링됩니다.

import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} public class Test {public static void main (String [] args) {list instrumentList = new ArrayList () // Adding Products InstrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentList.add (new Instrument (2, 'Piano', 18000f)) InstrumentsList.add (new Instrument (3, 'Flute', 15000f)) InstrumentsList.add (new Instrument (4, 'Drums', 48000f)) InstrumentsList.add (new Instrument ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p-> p.price> 30000) // 필터링 데이터 .map (p-> p.price) // 가져 오기 가격 .collect ( Collectors.toList ()) // 목록으로 수집 System.out.println (InstrumentPriceList2)}}
 산출: 

[48000.0, 32000.0]

Java의 스트림에 대한이 기사로 이동

반복 :

반복은 java에서 stream을 사용하여 수행 할 수 있습니다.

import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element % 4 == 0). limit (6) .forEach (System.out :: println)}}

산출:

4

8

12

16

스물

24

Java의 Stream 개념을보다 효과적으로 이해하기 위해 다른 예를 살펴 보겠습니다.

예:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// 정수 목록 생성 List num = Arrays.asList (6,7,8,9 ) //지도 메서드 사용 List squares = num.stream (). map (y-> y * y). collect (Collectors.toList ()) System.out.println (squares) // 문자열 목록 목록 생성 days = Arrays.asList ( 'Friday', 'Saturday', 'Sunday') // 필터 메서드 List res = days .stream (). filter (s-> s.startsWith ( 'S')). collect (Collectors.toList ()) System.out.println (res) // 정렬 된 메서드 목록 표시 = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / 정수 목록 만들기 List number = Arrays.asList (6,9,5,7,1) // collect 메서드는 집합을 반환합니다. Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach 메서드 num.stream (). map (y-> y * y) .forEach (x-> System.out.println (x)) / / reduce method int even = num.stream (). filter (x-> x % 2 == 0) .reduce (0, (result, i)-> result + i) System.out.println (even)}}

산출:

[36, 49, 64, 81]

[토요일 일요일]

[금요일 토요일 일요일]

자바 스크립트는 배열의 크기를 얻습니다.

[81, 49, 1, 36, 25]

36

49

64

81

14

스트림을 통해 사용자는 요소에 대한 작업을 효과적으로 수행 할 수 있습니다.

따라서 우리는 'Stream in Java'에 대한이 기사의 끝까지 왔습니다. 자세한 내용은 신뢰할 수있는 온라인 학습 회사 인 Edureka의 Java Training을 확인하십시오. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.