4. Stream API

카테고리 없음 2019. 3. 21. 23:45

4. Stream API

1)Stream API 기본

- 스트림 API는 데이터 집합조작용API

- 함수형 인터페이스와 람다식을 이용한다.

- 손쉬운 병렬처리를 지원한다.

- 기본적인 동작 스텝

1)데이터 소스에서 스트림 오브젝트를 가져온다.

2)스트림 오브젝트에 대해 중개연산(Intermediate Operation)을 적용한다.

 - 중개연산의 처리가 실행되는 것은 최종연산에서 한다.(지연평가)

3)스트림 오브젝트에 대한 최종연산(Terminal Operation)을 적용한다.

 - 지연되었던 모든 중개연산들이 최종연산 시 모두 수행된다.

- 스트림은 원본 데이터를 변경하지 않는다.

- 스트림은 재사용이 불가능하다.


2)java.util.stream 패키지


3)Stream, IntStream, LongStream, DoubleStream 인터페이스

- Stream<T>

- IntStream : Stream<Integer> Stream = array.stream();, static IntStream stream(int[] array, int startInclusive, int endExclusive)

 1,2,3,4,5 일 경우 start 1 end 4 일 경우 2,3,4가 해당.(1~3 번째)

- LongStream

- DoubleStream

4)stream 메소드

- 데이터소스의 List, Map등의 컬렉션을 스트림 API에서 처리하기 위해, 컬렉션 오브젝트를 스트림 오브젝트로 변환할 필요가 있다.

 그를 위해서 java.util.Collection 인터페이스에 defalut메소드로 stream메소드가 추가되었다.

- default Stream<E> stream()

5)forEach 메소드

- 스트림 API에서 제공하는 반복처리 메소드

- void forEach(Consumer<? super T> action)

- map 인터페이스의 forEach 메소드

 default void forEach(BiConsumer<? super K, ? super V> action)


6)range, rangeClosed메소드

- static IntStream range(int start, int end) -> start는 포함, end 미포함

- static IntStream rangeClosed(int start, int end) -> start는 포함, end 포함

7)of 메소드

- 임의의 참조형 오브잭트집합에서 Stream 오브젝트를 얻기 위해서 Stream 인터페이스의 static 메소드로서 제공되는 of메소드 사용


8)필터링 처리, filter 메소드

- 중간 처리 기능으로 요소를 걸러낸다.

- filter(Predicate) 판정으로 true일 경우 필터를 통과 시킨다.

9)매핑 처리, map 메소드

- 데이터의 집합을 다른 데이터로 교환해서 새 데이터집합을 생성하는 처리.

10)sorted 메소드

- 오름차순(Comparable), 임의의 순서로 하기 위해서는 Comparator 사용

11)comparing 메소드

- 정렬의 키로 사용하는 값을 전달하게 구현된 Function오브젝트를 인수를 전달

- 적절한 Comparator오브젝트를 생성해서 전달하는 기능을 제공한다.

- compare메소드는 인수를 2개 받는 추상메소드.

12)peek 메소드

- Stream<T>peek(Consumer<? super T>action

- 단순히 원본 스트림 오브잭트를 전달하는 중간조작 메소드이지만, 인수로 Consumer오브잭트를 얻어, 부작용을 동반하는 처리를 실행하는 것이 가능하다.

- 스트림 파이프라인에서 디버그목적으로 사용된다.

13)anyMatch, allMatch, noneMatch 메소드

- Predicate오브젝트를 인수로 받아, boolean형의 반환값을 전달하는 조건판정용 죄종연산 메소드

- anyMatch : 스트림의 일부요소가 지정된 조건을 만족할 때 true반환

- allMatch : 스트림의 모든요소가 지정된 조건을 만족할 때 true반환

- allMatch의 처리방법은 &&조건 처리와 비슷하다. 처리중 false 발생시 처리 멈추고 false반환

- noneMatch : 스트림의 모든요소가 지정된 조건을 만족하지 않을 경우에 true반환

14)findAny, findFirst 메소드

- 요소를 검색하는 기능. 첫번째로 찾은 요소를 반환한다.

- findAny : 병렬 작업시 유용.

- findFirst : 

15)flatMap 메소드

- flatMap()은 Array나 Object로 구성되어있는 모든 요소를 단일요소 스트림으로 반환한다.

- 해당 문제에서는 distint() 사용하여 중복 값 제거

16)merge 메소드

- 키가 존재하지 않을 경우 Bifunction오브젝트의 반환값이 키의 값으로 세팅된다.

17)reduction, count, max, min, reduce 메소드

- reduction : 스트림 오브젝트내 요소를 하나로 요약하는 최종연산

- long count() : 스트림 요소 총 개수를 반환

- max() : 스트림 요소 중 가장 큰 값

- min() : 스트림 요소 중 가장 작은 값

- reduce() : 이해는 함.

20)가변reduction 조작, 컬랙터, collect 메소드

- Collectors.cummingInt, Collectors.summingLong, Collectors.summingDouble

Posted by 왱코
,