Je veux append un stream à une option. Puisque Stream.concat
ne peut que concaténer Streams, j’ai cette question:
Comment convertir un facultatif en un stream ?
Exemple:
Optional optional = Optional.of("Hello"); // or Optional optional = Optional.empty(); Stream texts = optional.stream(); // not working
Dans Java-9, la méthode stream()
manquante est ajoutée, donc ce code fonctionne:
Stream texts = optional.stream();
Voir JDK-8050820 . Téléchargez Java-9 ici .
En Java 8, vous pouvez le faire:
Stream texts = optional.map(Stream::of).orElseGet(Stream::empty);
Tu peux faire:
Stream texts = optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
Je peux recommander la méthode Streams.stream(optional)
si vous n’êtes pas sous Java 9. Un exemple simple:
Streams.stream(Optional.of("Hello"))
Également possible d’importer Streams.stream
en statique, vous pouvez donc écrire
stream(Optional.of("Hello"))
Si vous utilisez une ancienne version de Java (regardez-vous, Android) et que vous utilisez l’ API aNNiMON Lightweight Stream , vous pouvez faire quelque chose comme:
final List flintstones = new ArrayList (){{ add("Fred"); add("Wilma"); add("Pebbles"); }}; final List another = Optional.ofNullable(flintstones) .map(Stream::of) .orElseGet(Stream::empty) .toList();
Cet exemple ne fait qu’une copie de la liste.
Une belle bibliothèque de l’un de mes collègues est Streamify. Beaucoup de collectionneurs, créant des stream à partir de pratiquement tout.
https://github.com/sourcy/streamify
La création d’un stream constitue un élément facultatif dans streamify:
Streamify.stream(optional)