Der Versuch, etwas Nicht leeres aus dem `Optional``` Stream in Java zu bekommen, war ziemlich mühsam. Ich hatte keine andere Wahl, als mein Bestes mit
filter ()
oder
flatMap () zu geben, wie in https://www.baeldung.com/java-filter-stream-of-optional gezeigt. Mit dem Hinzufügen von
`Optional :: stream``` aus Java 9 ist es jedoch viel einfacher geworden.
Angenommen, es gibt eine Funktion, die "Optional.empty ()" zurückgibt, wenn es sich um ein leeres Zeichen handelt, wie unten gezeigt. Angenommen, Sie möchten dies auf jedes Element einer Zeichenfolgenliste anwenden, um eine Liste nicht leerer Zeichen abzurufen.
static Optional<String> map(String s) {
if (s.length() == 0) {
return Optional.empty();
}
return Optional.of(s);
}
Es ist so, hart mit dem Filter </ code> zu arbeiten.
List.of("1", "2", ,"", "3").stream()
.map(Hoge::map)
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
Dies passiert, wenn Sie Java 9 `` `Optional :: stream``` verwenden.
List.of("1", "2", "", "3").stream()
.map(Hoge::map)
.flatMap(Optional::stream)
.collect(Collectors.toList());
Recommended Posts