English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java 9 개선된 Stream API는 스트림 처리를 더 쉽게 하고 복잡한 쿼리를 작성하기 위한 수집기의 사용을 더 쉽게 합니다.
Java 9 Stream에 몇 가지 메서드를 추가했습니다: dropWhile, takeWhile, ofNullable, iterate 메서드에 추가된 오버로드 메서드.
문법
default Stream<T> takeWhile(Predicate<? super T> predicate)
takeWhile() 메서드는 하나의 주장을 파라미터로 사용하여 주어진 스트림의 부분집합을 반환합니다. 주장이 처음으로 false를 반환할 때까지 반환됩니다. 첫 번째 값이 주장 조건을 만족하지 않으면 공백 스트림을 반환합니다.
takeWhile() 메서드는 순서 있는 스트림에서는 takeWhile이 처음부터 가능한 많은 요소를 반환하며, 순서 없는 스트림에서는 takeWhile이 처음부터 주어진 주장을 만족하는 요소의 부분집합을 반환합니다.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").takeWhile(s-!s.isEmpty()) .forEach(System.out::print); } }
위 예제에서 takeWhile 메서드는 공백 문자열을 만나면 반복을 멈추고 출력 결과는 다음과 같습니다:
abc
문법
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile 메서드는 takeWhile와 반대로 작용하며, 하나의 주장을 파라미터로 사용하여 주어진 스트림의 부분집합을 반환합니다. 주장이 처음으로 false를 반환할 때까지 반환됩니다.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty()) .forEach(System.out::print); } }
위 예제에서 dropWhile 메서드는 공백 문자열을 만나면 반복을 시작하고 출력 결과는 다음과 같습니다:
ef
문법
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
이 메서드는 초기 시드 값으로 순차적(불확정적일 수도 있습니다) 스트림을 생성하고 지정된 다음 메서드를 반복적으로 적용합니다. 지정된 hasNext의 predicate가 false를 반환할 때까지 반복합니다.
java.util.stream.IntStream; public class Tester { public static void main(String[] args) { IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println); } }
실행 출력 결과는 다음과 같습니다:
3 6 9
문법
static <T> Stream<T> ofNullable(T t)
ofNullable 메서드는 NullPointerExceptions 예외를 방지할 수 있으며, null 값을 피하기 위해 스트림을 확인할 수 있습니다.
지정된 요소가 null이 아니면 단일 요소 스트림을 가져오고, null이면 빈 스트림을 반환합니다.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { long count = Stream.ofNullable(10).count(); System.out.println(count); count = Stream.ofNullable(null).count(); System.out.println(count); } }
실행 출력 결과는 다음과 같습니다:
1 0