Open korjun1993 opened 1 year ago
출처: 자바의 정석 823~
skip(long n)
limit(long maxSize)
maxSize
filter(Predicate<? super T> predicate)
distinct()
Stream<T> sorted()
Stream<T> sorted(Comparator<? super T> comparator)
Stream<R> map<Function<? super T, ? extends R> mapper
Stream<File> fileStream = Stream.of(new File("Ex1.java"), new File("Ex1.bak")); Stream<String> filenameStream = fileStream.map(File::getName);
기본형 변환
count()
Stream<T>
기본형 스트림 → Stream<T> 변환
Stream<Integer>
조회
forEach()
fileStream.map(File::getName).filter(s -> s.indexOf('.' != -1) // 확장자가 없는 것은 제외 .peek(s -> System.out.printf("filename=%s%n", s))) // 파일명 출력 .map(s -> s.substring(s.indexOf('.') + 1)) // 확장자 추출 .peek(s -> System.out.printf("extension=%s%n", s)) // 확장자 출력 .forEach(System.out::println);
Stream<T[]>
Stream<String[]> strArrStream = Stream.of( new String[]{"abc", "def", "ghi"}, new String[]{"ABC", "GHI", "JKLMN"} )
Stream strStream = strArrStream.flatMap(Arrays::stream);
참고 사항 - Comparator의 default 메서드 - reversed() - thenComparing(Comparator<T> other) - thenComparing(Function<T, U> keyExtractor) - thenComparing(Function<T, U> keyExtractor, Comparator<U> keyComp) - thenComparingInt(ToIntFunction<T> keyExtractor) - Comparator의 static 메서드 - Comparator naturalOrder() - Comparator reverseOrder() - Comparator comparing(Function<T, U> keyExtractor) - Comparator comparing(Function<T, U> keyExtractor, Comparator<T> keyComp) - Comparator comparingInt(ToIntFunction<T> keyExtractor) - nullsFirst(Comparator<T> comparator) - nullsLast(Comparator<T> comparator) ```java // 학생 스트림을 반별, 성적순, 이름순으로 출력 studentStream.sorted(Comparator.comparing(Student::getBan) .thenComparing(Student::getTotalScore) .thenComparing(Student::getName)) .forEach(System.out::println);
출처: 자바의 정석 823~
skip(long n)
: 스트림의 일부 요소를 건너뜀limit(long maxSize)
: 스트림의 요소를maxSize
개로 제한filter(Predicate<? super T> predicate)
: 주어진 조건(Predicate)에 맞는 요소만 걸러냄distinct()
: 중복된 요소들을 제거Stream<T> sorted()
→ 기본 정렬 기준(Comparable)으로 정렬Stream<T> sorted(Comparator<? super T> comparator)
Stream<R> map<Function<? super T, ? extends R> mapper
기본형 변환
count()
만 지원하는Stream<T>
와 달리 기본형 스트림은 숫자를 다루는데 편리한 메서드를 제공한다.기본형 스트림 →
Stream<T>
변환Stream<T>
로 변환할 때는 mapToObj()를 사용한다.Stream<Integer>
로 변환할 때는 boxed()를 사용한다.조회
forEach()
와 달리 스트림의 요소를 소모하지 않으면서 연산 사이에 여러 번 끼워 넣을 수 있다.Stream<T[]>
→Stream<T>
변환Stream strStream = strArrStream.flatMap(Arrays::stream);