Devenir concis avec les options et Stream::flatMap de Java 8
Lorsque vous travaillez avec des flux Java 8, la transformation d'une liste
Solution Java 16
Java 16 introduit Stream.mapMulti, permettant un plus approche concise :
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Solution Java 9
JDK 9 ajouteOptional.stream, simplifiant la tâche :
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Solution Java 8
Dans Java 8, l'approche suivante peut être adoptée :
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .findFirst();</code>
Utilisation d'une fonction d'assistance pour convertir Facultatif en Stream :
<code class="java">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();</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!