Heim >Java >javaLernprogramm >Wie konvertiert man optional in Stream in Java 8?
Die Stream-API von Java bietet prägnante Codierungslösungen, aber es gibt bestimmte Szenarien, die eine Herausforderung darstellen können. Eine solche Situation beinhaltet die Konvertierung eines optionalen
Angesichts einer Liste von Dingen (List
things.stream().flatMap(this::resolve).findFirst();
Allerdings erwartet flatMap() einen Stream als Rückgabewert, während Optional keine stream()-Methode bereitstellt.
Java 16 führt Stream.mapMulti() ein und lindert dieses Problem:
Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();
Java 9 führt Optional.stream() ein und ermöglicht die direkte Konvertierung:
Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();
Bedauerlicherweise fehlt in Java 8 eine einfache Methode zum Konvertieren von Optional in Stream. Es kann jedoch eine Hilfsfunktion genutzt werden:
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();
Das obige ist der detaillierte Inhalt vonWie konvertiert man optional in Stream in Java 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!