Можете ли вы разделить поток на два потока?
У меня есть набор данных, представленный потоком Java 8:
Stream stream = ...;
Я вижу, как отфильтровать его, чтобы получить случайное подмножество - например,
Random r = new Random();
PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator();
Stream heads = stream.filter((x) -> (coin.nextInt() == 0));
Я также вижу, как можно уменьшить этот поток, чтобы получить, например, два списка, представляющих две случайные половины набора данных, а затем превратить их обратно в потоки. Но есть ли прямой способ генерировать два потока из исходного? Что-то вроде
(heads, tails) = stream.[some kind of split based on filter]
Спасибо за понимание.