Scala生成列表的排列会耗尽内存

时间:2015-07-08 17:04:23

标签: scala memory-management permutation

当我尝试使用内置函数List(el1,el2 ..)。permutations生成Scala列表元素的排列时,堆耗尽内存。

有没有办法批量生成这种排列并将它们存储在某个文件中?那么它不会耗尽内存吗?

1 个答案:

答案 0 :(得分:4)

你可以这样做:

list.permutations foreach { x => 
    // Save permutation to file.
}

如果要将排列保存在更大的块中,可以先对排列进行分组(使用适当的块大小):

list.permutations.grouped(chunkSize) foreach { x =>
    // Save chunk of permutations to file.
}

从permutations方法返回的迭代器将在保存到文件后丢弃排列。它也是懒惰的,因此在保存上一个块之前不会计算其他排列。