(자바8) 스트림 활용

<필터링과 슬라이싱>


1. 프레디케이트로 필터링
-> filter 메소드는 프레디케이트(불린을 반환하는 함수)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다.
예)
List<Dish> vegetarianMenu = menu.stream()
                                               .filter(Dish::isVegetarian) //채식 요리인지 확인하는 메소드레퍼런스
                                               . collect(toList());

2. 고유요소 필터링
-> distinct라는 메소드 (hashCode, equals로 결정)

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 4, 5);
numbers.stream()
.filter(i -> i % 2==0)
.distnct()
.forEach(System.out::println);


3. 스트림축소
-> limit

4. 요소 건너뛰기
-> skip(n)

<매핑>

스트림 API 의 map과 floatMap메소드는 특정 데이터를 선택하는 기능을 제공

List<Integer> dishNameLengths = menu.stream()
                                                     .map(Dish::getName)
                                                     .map(String::length)
                                                     .collect(toList());



<스트림의 평면화>

* flatMap
예) 
List<String> uniqueCharacters = 
words.stream()
.map(w -> w.split(""))
.flatMap(Arrays::stream) //map(Arrays::stream)과 다르다. 하나의 평면화된 스트림이다.
.distinct()
.collect(Collectors.toList());



댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기