假设有一个字符串数据集不能全部放入内存,我们想要删除所有重复项。
我不是在寻找代码,而是希望有人能引导我完成这个。
如果我可以将整个数据集放入内存,我会对集合进行排序,然后遍历并删除元素(如果当前元素与前一个元素相同)。
在这个实际案例中,我考虑将数据集的每个可用“ block ”加载到内存中,对其进行排序,删除重复项,然后在每个 block 上迭代执行此操作。这看起来效率很低,而且只有在我可以将整个数据集放入内存以在最后一次迭代中删除剩余的重复项时它才有效。
建议?
编辑:我之前处理这个小问题的方法是在内存中维护一个哈希表,遍历可以放入内存的数据集的每个 block ,如果不适合则将字符串添加到哈希表存在,否则跳过它。我们可以做得更好吗?
最佳答案
我要找的是外部排序。
https://en.wikipedia.org/wiki/External_sorting
此外,我的问题与此重复: Efficient Out-Of-Core Sorting
关于algorithm - 从数据集中删除不适合内存的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36976424/