我有一个由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.forEach((x) -> ((x == 0) ? heads : tails).add(x));
我有一个Akka Streams,我想根据谓词将其分成两个源。 例如。有一个源(类型被有意简化): 还有两种方法: 我希望能够拆分根据谓词,并将右侧部分传递给方法,左侧部分传递给方法。 我尝试使用拆分器,但它需要s结尾。
问题内容: 目标是: 创建文件读取流。 用管道将其压缩到gzip() 然后将zlib输出的读取流通过管道传输到: 1)HTTP 对象 2) 和 可写文件流,以保存压缩后的输出。 现在我可以降到3.1了: …效果很好,但是我还需要 将压缩后的数据保存到文件中, 这样我就不需要每次都进行zip压缩,并且能够直接将压缩后的数据作为响应流化。 那么,如何在Node中一次将一个可读流传送到两个可写流中? 将
在Java中,我们能否以某种方式将流分成不超过N个元素的子流?例如 按两个流拆分的解决方案仅对2个流是正确的,对于N个流也是如此,这将是非常丑陋和只写的。
我有两个收藏: 现在我的解决办法是: 我的问题:是否有其他方法来配对和收集Foo对象?
除了这个用例,流还有很多问题 我有一个巨大的对象流
我想同时执行两个流,并生成作为前两个流的组合的第三个流 我想从这两个中生成一个新的,它将与这一个等价 我目前找到的是或