¿Puedes dividir una secuencia en dos corrientes?
Tengo un conjunto de datos representado por un flujo de Java 8:
Stream<T> stream = ...;
Puedo ver cómo filtrarlo para obtener un subconjunto aleatorio, por ejemplo
Random r = new Random();
PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator();
Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0));
También puedo ver cómo podría reducir este flujo para obtener, por ejemplo, dos listas que representan dos mitades aleatorias del conjunto de datos, y luego convertirlas de nuevo en flujos. Pero, ¿hay una manera directa de generar dos flujos desde el inicial? Algo como
(heads, tails) = stream.[some kind of split based on filter]
Gracias por cualquier idea