【发布时间】:2014-01-05 11:53:33
【问题描述】:
就我而言,我需要比较两个大型 HashSet 以使用 removeAll 找到差异。为此,我必须将来自不同数据源的所有数据放入内存,然后进行比较。当每个 HashSet 可能包含超过 300 万条记录时,这会产生内存不足问题。是否有任何方法或库可以减少内存消耗但也能达到相同的结果?
【问题讨论】:
-
拆分数据或使用延迟初始化
-
数据源是数据库吗?
-
数据是如何存储的?如果它被排序(根据一些比较器),它可以使用非常少的内存一次完成。
-
另一种解决方案:更多内存:D
-
数据存储在不同的数据库中。我的程序检索数据并将它们放入两个 HashSet 中,这些 HashSet 使用相同的 Java 类进行初始化,例如我的记录。然后它调用
HashSet<MyRecord>.removeAll(another HashSet<MyRecord>)
标签: java algorithm memory hashset