Intégration facultative de Java avec Stream::flatMap
Les développeurs Java recherchent un moyen concis de mapper une liste d'objets à des objets facultatifs et de récupérer les Le premier résultat non vide utilisant l'API Stream de Java 8 peut rencontrer un défi.
L'approche intuitive consistant à utiliser Things.stream().flatMap(this::resolve).findFirst() n'est pas réalisable car facultatif n'a pas de méthode stream(). Cela a conduit à l'exploration de solutions alternatives :
Java 16
Java 16 a introduit Stream.mapMulti, permettant la solution concise suivante :
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Java 9
Java 9 a introduit Option.stream, permettant cette solution plus simple :
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Java 8
En Java 8, l'approche suivante utilisant une méthode d'assistance peut être utilisée :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!