如何在Groovy中“切片”一个集合
发布时间:2020-12-14 16:34:47 所属栏目:大数据 来源:网络整理
导读:我有一组对象,我想分解成一个集合集合,其中每个3个元素的顺序组合在一个集合中. 例如,如果我有 def l = [1,4,2,5,9] 我想把它变成: def r = [[1,2],[4,9]] 我现在通过迭代收集并分解它来完成它,但是我需要将这些“组”传递到一个处理它们的并行化函数中.消
我有一组对象,我想分解成一个集合集合,其中每个3个元素的顺序组合在一个集合中.
例如,如果我有 def l = [1,4,2,5,9] 我想把它变成: def r = [[1,2],[4,9]] 我现在通过迭代收集并分解它来完成它,但是我需要将这些“组”传递到一个处理它们的并行化函数中.消除这个O(n)预处理是很好的工作,只是说些什么 l.slice(3).collectParallel { subC -> process(subC) } 我在Range类中找到了step方法,但它看起来只对索引有效.任何聪明的想法? 更新: 解决方法
查看groovy 1.8.6. List上有一个新的整理方法.
def list = [1,3,4] assert list.collate(4) == [[1,4]] // gets you everything assert list.collate(2) == [[1,[3,4]] //splits evenly assert list.collate(3) == [[1,3],[4]] // won't split evenly,remainder in last list. 看看Groovy List documentation更多的信息,因为还有一些其他参数,给你一些其他的选择,包括删除余下的. 就您的并行处理而言,您可以使用gpars浏览列表. def list = [1,5] GParsPool.withPool { list.collate(2).eachParallel { println it } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |