Java의 Stream API는 간결한 코딩 솔루션을 제공하지만 문제를 일으킬 수 있는 특정 시나리오가 있습니다. 이러한 상황 중 하나는 Optional
주어진 사물 목록(List
things.stream().flatMap(this::resolve).findFirst();
그러나 flatMap()은 스트림을 반환 값으로 예상하는 반면 Optional은 stream() 메서드를 제공하지 않습니다.
Java 16에서는 Stream.mapMulti()를 도입하여 이 문제를 완화했습니다.
Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();
Java 9에서는 직접 변환이 가능한 Optional.stream()을 도입했습니다.
Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();
안타깝게도 Java 8에는 Optional을 Stream으로 변환하는 간단한 방법이 없습니다. 그러나 도우미 기능을 활용할 수도 있습니다.
static <T> Stream<T> streamopt(Optional<T> opt) { if (opt.isPresent()) return Stream.of(opt.get()); else return Stream.empty(); } Optional<Other> result = things.stream() .flatMap(t -> streamopt(resolve(t))) .findFirst();
위 내용은 Java 8에서 Optional을 Stream으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!