Stream의 중간 연산자
메서드 | 설명 |
자르기 | |
IntStream skip(long n) | 매개변수의 갯수 만큼 건너뛰기 |
IntStream limit(long maxSize) | maxSize만큼 출력하기 |
필터 - 조건에 맞는 요소 찾아내기 | |
Stream<T> filter(Predicate<? super T> predicate) |
predicate 조건에 맞는 요소만 추출 |
Stream<T> distinct() | 고유요소 필터링 중복제거 |
정렬 | |
Stream<T> sorted() | 정렬 |
Stream<T> sorted(Comparator<? super T> comparator) | 지정된 Comparator로 정렬 |
매핑 - 요소 변환 | |
Stream<R> map(Function<? super T, ? extends R> mapper) | 요소 각각의 Function적용 |
Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>) | 스트림의 스트림을 스트림으로 변환 |
기타 | |
Stream<T> peek(Consumer<? super T> action) | 중간연산 미리보기 |
스트림 축소
- 주어진 사이즈 이하의 크기를 갖는 새로운 스트림을 반환하는 limit(n) 메서드
요소 건너뛰기
- 처음 n개 요소를 제외한 스트림을 반환하는 skip(n) 메서드
List<String> names = menu.stream()
.skip(2) // 2개를 건너 뛴다.
.limit(3) //3개만 출력한다.
.collect(Collectors.toList());
필터
- filter 변환은 새로운 스트림을 돌려주는 데 이 스트림은 특정 조건과 일치하는 요소로 구성된다.
- filter 메서드의 인자는 Predicate<T>이다.
menu.stream()
.filter(Food::isVegetarian) //채식요리인지
.collect(toList);
고유 요소 필터링(중복 제거)
- distinct() 고유 요소로 이루어진 스트림을 반환한다. (hashCode, equals)
Stream<Integer> st = Stream.of(1,2,3,3,3,4,5,5);
st.distinct().forEach(System.out::print); //=>12345
정렬
Stream<Integer> so = Stream.of(1,2,8,10,3,4,6,5);
so.sorted().peek(System.out::print) //=>123456810
.sorted(Comparator.naturalOrder()).peek(System.out::print) //=>123456810 - 기본정렬
.sorted(Comparator.reverseOrder()).peek(System.out::print) //=>108654321 - 역정렬
.sorted((a, b) -> a.compareTo(b)).forEach(System.out::print); //=>123456810 - 람다식 사용
요소 변환 - 객체에서 특정 데이터를 선택하는 작업
- map, flatMap 메서드가 있다.
- map 메서드를 연결할 수 있다.
menu.stream()
.filter(d -> d.getCalories() > 300)
.map(Food::getName) // 이름을 리턴한다.
.map(String::length) // 이름의 길이를 리턴한다.
.collect(Collectors.toList())
);
Stream<String[]> sa = Stream.of(new String[]{"abc", "def", "ghi" }
, new String[]{"123", "456", "789"});
sa.flatMap(Arrays::stream).forEach(System.out::println); //Stream<String>//=>abc def ghi 123 456 789
'정리 > Java' 카테고리의 다른 글
Java - Stream 최종 연산자 (0) | 2017.03.08 |
---|---|
Java - Optional (0) | 2017.03.07 |
Java - 스트림(Stream) 생성 (0) | 2017.03.04 |
Java - 스트림(Stream) 작업흐름 (0) | 2017.03.04 |
Java - 스트림(Stream)과 컬렉션 (0) | 2017.03.03 |
댓글