我有一个由 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]
感谢您的任何见解。
原文由 user1148758 发布,翻译遵循 CC BY-SA 4.0 许可协议
不完全是。你不能从一个中得到两个
Stream
;这没有意义——您如何在不需要同时生成另一个的情况下迭代一个?一个流只能操作一次。但是,如果您想将它们转储到列表或其他内容中,您可以这样做