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.