Java 8 스트림: 조건자로 제한
잠재적으로 무한한 스트림이 있는 시나리오에서는 처음 스트림까지 스트림을 제한해야 하는 경우가 종종 있습니다. 요소가 특정 조건자에 실패합니다. Java 9에는 유용한 takeWhile 작업이 도입되어 이 기능을 쉽게 사용할 수 있습니다.
불행히도 Java 8에는 이러한 작업이 없습니다. 따라서 이 동작을 달성하기 위한 대체 접근 방식을 모색해야 합니다.
Java 8에서 takeWhile 구현
Java 8에서 takeWhile을 구현하려면 다음 전략을 활용할 수 있습니다.
아래는 구현 예:
import java.util.Iterator; import java.util.stream.Stream; public class StreamTakeWhile { public static <T> Stream<T> takeWhile(Stream<T> stream, java.util.function.Predicate<T> predicate) { Iterator<T> iterator = stream.iterator(); return Stream.generate(() -> { if (iterator.hasNext() && predicate.test(iterator.next())) { return iterator.next(); } return null; }); } public static void main(String[] args) { StreamTakeWhile.takeWhile(Stream.iterate(1, n -> n + 1), n -> n < 10) .forEach(System.out::println); } }
Java 9 사용 takeWhile
Java 9에서는 아래와 같이 takeWhile 작업을 직접 활용할 수 있습니다.
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
위 내용은 스트림용 Java 9의 `takeWhile`에 해당하는 Java 8을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!