Можете ли вы разделить поток на два потока?

У меня есть набор данных, представленный потоком 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]

Спасибо за понимание.

Ответы на вопрос(9)

Ваш ответ на вопрос