Können Sie einen Stream in zwei Streams aufteilen?

Ich habe einen Datensatz, der durch einen Java 8-Stream dargestellt wird:

Stream<T> stream = ...;

Ich kann sehen, wie man es filtert, um eine zufällige Teilmenge zu erhalten - zum Beispiel

Random r = new Random();
PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator();   
Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0));

Ich kann auch sehen, wie ich diesen Stream reduzieren kann, um beispielsweise zwei Listen zu erhalten, die zwei zufällige Hälften des Datensatzes darstellen, und diese dann wieder in Streams umzuwandeln. Aber gibt es eine direkte Möglichkeit, aus dem ersten Stream zwei Streams zu generieren? So etwas wie

(heads, tails) = stream.[some kind of split based on filter]

Vielen Dank für jede Einsicht.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage