본문 바로가기

자바/자바8

Stream API

람다표현식 변환

int count = 0;

for (String word : words) {

if (word.length() > 12) {

count++;

}

}

 - stream

int count = words.stream().filter(word -> word.length() > 12).count();

 - parallel stream

int count = words.parallelStream().filter(word -> word.length() > 12).count();

 

of 메서드 : 파라미터로 가변 인자를 받음

Stream<String> words = Stream.of("1", "2", "3");


empty 메서드 : 요소가 없는 스트림을 생성

Stream<String> emptyStream =  Stream.empty();

 

map, flatMap 메서드의 차이

 - map : Stream<Stream<String>> result = words.map(w -> wordList.stream());

 - flatMap : Stream<String> result = words.flatMap(w -> wordList.stream());


서브스트림 추출과 스트림 결합

Stream<String> words = Stream.of("Hello World").skip(1); // 첫번째 요소 제거

Stream<Charater> combined = Stream.concat(Stream.of("Hello "), Stream.of("World")); // ['H', 'e', 'l', 'l', 'o' ...] 스트림을 돌려줌


상태 유지 변환

Collections.sort 메서드는 컬렉션을 직접 정렬하지만, Stream.sorted 메서드는 새롭게 정렬된 스트림을 리턴한다.


단순 리덕션

 - 최종연산. 사용 후에는 스트림을 사용할 수 없다.

 - count, min, max, findFirst, findAny, startsWith, allMatch, noneMatch


옵션 타입

 - isPresent : Optional<T> 객체가 값을 포함하는지 알려준다.

 - get : 감싸고 있는 요소가 존재할 때는 요소를 얻고, 없으면 NoSuchElementException을 던진다.

 - Optional.of(T), Optional.empty()로 생성



'자바 > 자바8' 카테고리의 다른 글

람다  (0) 2016.06.11