1) 병렬처리 : 프로그램 내의 계산 영역을 여러 개로 나누어 각각에 대한 계산을 여러 프로세스에서 동시에 수행하는 것이다.
2) 자바에서는 병렬처리를 Stream API를 통해 제공되며 병렬처리 또한
손쉽게 구현할 수 있도록 클래스와 메소드를 제공한다.
3)Stream API 는 주로 배열이나 Collection 등의 집합체를 바탕으로
값의 집계나 데이터를 처리하는 API 이다.
4)Stream API의 stream은
java.util.stream.Stream의 of(),
java.util.stream.Arrays의 stream(),
java.util.Collection의 stream() 메소드를 통해 만들수 있으며
대상 객체를 스트림으로 변환하게 되면 Map,Reduce등의 집계를 간편하게 할수 있다.
5) Stream 인스턴스를 생성하는 주요 메소드를 확인하자.
- Collection : stream() -> Collection의 요소를 바탕으로 stream의 인스턴스 생성
- Arrays : stream(T [] array) -> 인수 array의 요소를 바탕으로 Stream 인스턴스 생성
- Stream : of(T...values) -> 인수 values를 바탕으로 Stream의 인스턴스 생성 또는 인수에 배열을 전달하ㅔ 되면 배열의 요소로 만든 Stream 인스턴스를 생성한다.
6). 객체 출력
스트림 변호나 후 검색, 집계, 연산 등을 구현한 다음 마지막에서 출력을 할 때 사용한다.
void forEach(Consumer <? super T> consumer)void forEachOrdered(Consumer <? super T> consumer)
7). stream에서 작업
- Map(intermediate Operators) : Stream 인스턴스의 각 요소를 조건에 맞춘 새로운 Stream으로 검색하거나, 다른 데이터 요소를 가진 Stream 인스턴스를 생성하는 작업을 한다.
- filter(Predicate<? super T> predicate)
predicate에 정의된 boolean의 리턴값이 true에 해당하는 요소만 Stream로 반환- limit(long maxSize)
요소의 처음부터 maxSize까지 요소의 Stream을 리턴- distinct()
요소끼리 equals 메소드에서 비교하여 중복 항목을 제외한 Stream으로 리턴- map(Function<? super T, ? extends R> mapper)
지정된 값을 변경한 새로운 Stream으로 리턴, 입력 T를 R로 변환하는 함수 인터페이스 Function을 매개인자로 갖는다- flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
입력된 T를 복수개의 R로 변환하는 map 메소드로 flatMap에서 만들어진 Stream은 자동으로 Close 된다.- peek(Consumer<? super T> action)
변환하는 작업을 테스트 할 때 사용하는 메소드이다. 디버깅 용도로 어떤 값이 들어 있는지 확인하고 싶을 때 사용한다. 요소의 수에 어떠한 영향도 주지 않는다.
- Reduce(Terminal Operators) : 리턴받은 Stream 인스턴스의 요소에서 어떤 결과를 얻거나, 요소를 사용하여 출력 하는 등의 작업을 담당한다. Stream 처리의 구현은 0개 이상의 중간 처리와 최종 처리를 순서대로 진행한다.
get()
Optional에 들어있는 값을 리턴한다. 포함하고 있는 값이 없는 경우는 NoSuchElementException 예외를 발생시킨다.isPresent()
값이 포함되어 있는 경우는 true 아니면 falseorElse(T other)
값이 포함되어 있는 경우 그 값을 Return하고 아니라면 인수 other를 Return 한다orElseGet(Supplier<? extends T> other)
값이 포함되어 있는 경우 그 값을 Return하고 아니라면 supplier가 생성한 값을 리턴한다.orElseThrow(Supplier<? extends X> exceptionSupplier)
값이 포함되어 있는 경우 그 값을 Return하고 아니라면 supplier가 발생시키는 Exception을 발생시킨다.of(T value)
ofNullable(T value)
Optional의 static 메소드로 value가 null이 아닌경우 그 value를 포함하는 Optional을 Return하고 null인경우 Optional의 empty메소드로 생성되는 Optional을 Return 한다.empty()
ifPresent(Consumer<? super T> consumer)
Optional 값을 포함하는 경우 consumer 작업을 수행하고 Optional가 Empty인 경우 아무것도 하지 않는다.reduce(BinaryOperator accumulator)
accmulator 처리 할 BinaryOperator결과와 요소를 사용해서 처리를 반복하고 처리 결과를 Optional로 Return한다. 만일 요소가 없는 등 결과가 없는 경우 empty의 Optional을 Return 한다.