(자바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());
댓글
댓글 쓰기