○Stream

 ▷data-processing operstions을 지원하는 Element Sequence

 ▷배열/컬렉션의 요소들을 쉽고 효율적으로 맵핑/필터링 가능 (filter, map, reduce, find, match, sort, ...)

 

 ▶Collection과의 차이점

  ▶Collection

   ▷모든 요소에 접근시에 반복문 (for/for-each)을 이용해서 순회해야 한다.

  ▶Stream

   ▷stream 내의 메소드를 이용해서 데이터들을 조작 가능하다.

 

 ▶생성

  ▶exploit values를 통해 생성

   ▷Stream.of(...)의 Static method를 통해 생성

 

  ▶Arrays를 통해 생성

   ▷Arrays.stream(array)

   ▷Stream.of(array)

 

  ▶Collection을 통해 생성

   ▷Collection.stream

 

 

  ▶파일 -> java.nio.file.Files 의 많은 Static methods

   ▷Files.lines : 줄단위로 Stream을 만듬.

 

  ▶iterate

   ▷매개변수 2개 : 시작, 증감 (limit, takeWhile 등으로 조건)

   ▷매개변수 3개 : 시작, 조건, 증감

  ▶generate

   ▷function reference를 통해 return 값으로 Stream을 만든다.

   ▷Lambda expression을 지원한다.

 

 

 ▶Operation Methods

  ▷대부분의 연산에 대해 Pipelining이 적용된다. (연산의 결과 = Stream, 입력으로 사용 가능)

  ▶Filtering

   ▷조건에 따라 Stream의 일부 element들을 가져온다.

 

   ▶filter

    ▷조건을 만족하는 element들의 stream을 반환

    ▷조건 : boolean을 리턴하는 함수형 인터페이스, 람다식으로 표현 가능

   ▶distinct

    ▷모든 요소들을 Unique하게 한다. (겹치는 element 제거)

 

   ▶takeWhile

    ▷조건을 불만족하는 element 전까지의 element들로 이루어진 Stream을 반환한다.

 

   ▶dropWhile

    ▷처음 조건이 만족한 이후의 element들로 이루어진 Stream을 반환한다.

   ▶limit

    ▷Stream에서 처음 몇개의 element만으로 새로운 Stream을 만든다.

 

 

 

  ▶sorted

   ▷Stream을 정렬함.

   ▷매개변수 없음 -> 정렬 객체에 Comparable 구현 필요

   ▷매개변수 Comparator -> 매개변수에서 Comparator 정의 필요

   ▷역순 -> .reversed()

 

  ▶map

   ▷Stream의 모든 element에 대해 적용되어, return 값으로 element를 덮어씌운다.

 

   ▶forEach

    ▷Stream의 모든 element에 대해 적용되지만, element 값에는 영향을 주지 않는다.

 

  ▶Matching

   ▷모든/일부 element가 조건을 만족하는지 확인한다.

   ▷조건 : boolean을 리턴하는 함수형 인터페이스, 람다식으로 표현 가능

   ▶anyMatch

    ▷하나라도 조건을 만족함.-> true 반환

   ▶allMatch

    ▷모두 조건을 만족함 (true)-> true 반환

   ▶noneMatch

    ▷모두 조건을 만족하지 않음 (false) -> true 반환

 

  ▶Finding

    ▷Stream에 element가 하나라도 있으면, 그 중 하나를 return한다.

    ▷Optional<T>의 형태로 return한다. -> isPresent() : 존재하는가? / get() : 값 접근

 

    ▶findAny

     ▷Stream의 무작위 element를 반환한다.

    ▶findFirst

     ▷Stream의 첫 element를 반환한다.

 

  ▶collect

   ▷stream을 List로 변환

   ▷Stream을 String으로 변환 (구분자, prefix, suffix)

 

  ▶count

   ▷Stream의 element 개수를 샌다.

 

'컴퓨터 언어 > java' 카테고리의 다른 글

Database Programming  (0) 2020.12.10
Network Programming  (0) 2020.12.08
Thread  (0) 2020.11.24
Process  (0) 2020.11.23
Exception  (0) 2020.11.19

+ Recent posts