Czy możesz podzielić strumień na dwa strumienie?

Mam zestaw danych reprezentowany przez strumień Java 8:

Stream<T> stream = ...;

Widzę, jak filtrować, aby uzyskać losowy podzbiór - na przykład

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

Mogę również zobaczyć, jak mogę zredukować ten strumień, aby uzyskać na przykład dwie listy reprezentujące dwie losowe połówki zestawu danych, a następnie zamienić je z powrotem w strumienie. Ale czy istnieje bezpośredni sposób na wygenerowanie dwóch strumieni z początkowego? Coś jak

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

Dziękuję za wgląd.

questionAnswers(9)

yourAnswerToTheQuestion