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

标签 scala memory-management permutation

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

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

最佳答案

你可以这样做:

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

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

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

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

关于Scala 生成列表的排列耗尽内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299130/

相关文章:

java - 是否有任何库可以从 .class 文件(字节码)中提取类、方法、成员和字段依赖项名称?

java - 嵌套类占用更多内存空间?

c - 如何在 C 中的函数中正确分配和传递指针

java - 在 Java 中生成加起来为 100 的 12 个数字的所有组合的有效方法

Scalaz Kleisli 使用优势

scala - ClassNotFoundException:scala.PreDef $问题

list - 如何在 Lisp 中一次生成列表中元素的所有排列?

algorithm - 从 n 个选择中有效地计算长度为 k 的下一个排列

performance - 将 Scala Map 作为参数传递给函数需要太多时间

c++ - 在堆上分配时,在哪些情况下会发生 "automatic"清理(如果有的话),在哪些情况下不会发生?