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