Stream
스트림은 데이터소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서들을 정의
데이터소스를 추상화하였다는 것은, 데이터 소스가 무엇이든 같은 방식으로 다룰 수 있게 되었다는 것과 코드의 재사용성이 높아진다는 것을 의미
Java 8 Stream API 을 배워야하는 이유로 "가독성/간편성" 과 "성능/공짜점심"
스트림의 특징
스트림은 데이터 소스를 변경하지 않는다.
스트림은 데이터 소스로 부터 데이터를 읽기만할 뿐, 데이터 소스를 변경하지 않는다. 필요하다면, 정렬된 결과를 컬렉션이나 배열에 담아서 반환
스트림 API덕분에
- 메서드에 코드를 전달하는 간결 기법 (메서드 레퍼런스와 람다)
- 인터페이스의 디폴트 메서드 추가
스트림 (stream processing)
스트림이란 한 번에 한개씩 만들어지는 연속적인 데이터 항목들의 모임
자바8의 메서드 레퍼런스 (method referense) :: ('이 메서드를 값으로 사용하라'는 의미)
프레디케이트?
수학에서는 인수로 값을 받아 true나 false를 반환하는 함수를 프레디케이트(predicate)
자바8은 스트림 API(java.util.stream)로 '컬렉션을 처리하면서 발생하는 모호함과 반복적인 코드 문제','멀티코어 활용 어려움'
이라는 두 가지 문제를 모두 해결
디폴트 메서드
자바8에서는 라이브러리 설계자가 더 쉽게 변화할 수 있는 인터페이스를 만들수 있도록
디폴트 메서드를 추가함
자바 8에서는 NullPointer 예외를 피할 수 있도록 도와주는 Optional<T> 클래스를 제공함
Optional<T>는 값을 갖거나 갖지 않을 수 있는 컨테이너 객체다
댓글