生成列表排列的 Scala 内存不足

Scala generating permutations of list runs out of memory

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

有没有办法批量生成这个排列并将它们存储在某个文件中?这样它就不会 运行 内存不足?

你可以这样做:

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

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

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

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