Devenir concis avec Java 8's Facultatif et Stream::flatMap
Lorsque vous travaillez avec des flux Java 8, transformer une Liste
Solution Java 16
Java 16 introduit Stream.mapMulti, permettant un plus approche concise :
Optional result = things.stream()
.map(this::resolve)
.mapMulti(Optional::ifPresent)
.findFirst();
La solution Java 9
JDK 9 ajoute Facultatif.stream, simplifiant la tâche :
Optional result = things.stream()
.map(this::resolve)
.flatMap(Optional::stream)
.findFirst();
Solution Java 8
Dans Java 8, l'approche suivante peut être adoptée :
Optional result = things.stream()
.map(this::resolve)
.flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
.findFirst();
Utilisation d'une fonction d'assistance pour convertir Facultatif en Stream :
static Stream streamopt(Optional opt) {
if (opt.isPresent())
return Stream.of(opt.get());
else
return Stream.empty();
}
Optional result = things.stream()
.flatMap(t -> streamopt(resolve(t)))
.findFirst();
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3