将一个流分成许多 [英] split a stream in many
本文介绍了将一个流分成许多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道是否有一种优雅的方式来实现这样的目标:
I'd like to know if there a elegant way to achieve something like that:
val l = Stream.from(1)
val parts = l.some_function(3) //any number
parts.foreach( println(_) )
> 1,4,7,10...
> 2,5,8,11...
> 3,6,9,12...
实际上,我需要在 Streams 上进行此类操作以进行并行化 - 将数据拆分到多个 actor 而不将整个内容加载到内存中.
Actually I need such operation on Streams for parallelization - to split the data across multiple actors without loading the whole stuff into memory.
推荐答案
来自 将scala列表拆分为n个交错列表完全满足条件,稍微修改以适应Streams:
The answer from Split a scala list into n interleaving lists fully meets the conditions, a little bit modified to suit Streams:
def round[A](seq: Iterable[A], n: Int) = {
(0 until n).map(i => seq.drop(i).sliding(1, n).flatten)
}
round(Stream.from(1),3).foreach(i => println(i.take(3).toList))
List(1, 4, 7)
List(2, 5, 8)
List(3, 6, 9)
这篇关于将一个流分成许多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文