>  기사  >  Java  >  객체를 선택적 객체에 매핑하고 Stream::FlatMap을 통해 비어 있지 않은 첫 번째 결과를 검색하는 데 가장 적합한 Java 선택적 접근 방식은 무엇입니까?

객체를 선택적 객체에 매핑하고 Stream::FlatMap을 통해 비어 있지 않은 첫 번째 결과를 검색하는 데 가장 적합한 Java 선택적 접근 방식은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 03:03:28280검색

Which Java Optionals Approach Is Best for Mapping Objects to Optional Objects and Retrieving First Non-Empty Result Via Stream::flatMap?

Stream::FlatMap과 Java 선택적 통합

객체 목록을 Optional 객체에 매핑하고 검색하는 간결한 방법을 찾는 Java 개발자 Java 8의 Stream API를 사용하는 첫 번째 비어 있지 않은 결과는 문제에 직면할 수 있습니다.

things.stream().FlatMap(this::resolve).findFirst()를 사용하는 직관적인 접근 방식은 Optional에 스트림() 메서드. 이로 인해 대체 솔루션이 모색되었습니다.

Java 16

Java 16에서는 Stream.mapMulti를 도입하여 다음과 같은 간결한 솔루션을 구현했습니다.

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .<Other>mapMulti(Optional::ifPresent)
        .findFirst();</code>

Java 9

Java 9에서는 Optional.stream을 도입하여 이보다 간단한 솔루션을 제공했습니다.

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .flatMap(Optional::stream)
        .findFirst();</code>

Java 8

Java 8에서는 도우미 메소드를 사용하는 다음 접근 방식을 사용할 수 있습니다.

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .flatMap(Optional::ofNullable)
        .findFirst();

// Helper method that converts Optional<T> to Stream<T>
private static <T> Stream<T> streamOptional(Optional<T> optional) {
  return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
}</code>

위 내용은 객체를 선택적 객체에 매핑하고 Stream::FlatMap을 통해 비어 있지 않은 첫 번째 결과를 검색하는 데 가장 적합한 Java 선택적 접근 방식은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.