我有一个用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]
感谢任何见解。
Stream
转换为多个Stream
而不进行中间转换的可能性,尽管我认为达到这个问题的人实际上正在寻找实现此目标的方法,而不考虑这种限制,这是Mark的答案。这可能是因为标题中的问题与描述中的问题不同。 - devildelta