c# - 计算十亿元素列表中唯一元素的最快方法是什么?

标签 c# algorithm memory collections

我的问题并不常见。让我们想象几十亿个字符串。字符串通常少于 15 个字符。在这个列表中,我需要找出唯一元素的数量。

首先,我应该使用什么对象?你不应该忘记如果我添加一个新元素,我必须检查它是否已经存在于列表中。一开始这不是问题,但是在几百万字之后它确实会减慢这个过程。

这就是为什么我认为 Hashtable 将是这项任务的理想选择,因为理想情况下检查列表只需要 log(1)。不幸的是,.net 中的单个对象只能是 2GB。

下一步将实现一个自定义哈希表,其中包含一个 2GB 哈希表列表。

我想知道也许你们中的一些人知道更好的解决方案。 (电脑的规范非常高。)

最佳答案

我会跳过数据结构练习,只使用 SQL 数据库。为什么要编写另一个您必须分析和调试的自定义数据结构,只需使用数据库。他们真的很擅长回答这样的问题。

关于c# - 计算十亿元素列表中唯一元素的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052853/

相关文章:

c++ - 堆损坏

c# - WPF - 如何将转换器应用于所有 DataGridTextColumn?

arrays - 在 O(log(n)) 时间内找到数组中缺失的数字

python - 如何减少词典排序代码的运行时间[Python]

algorithm - 是否有基于频率的缓存逐出算法?

python - 为什么 352GB 的 NumPy ndarray 可以在 8GB 内存的 macOS 电脑上使用?

python - Sklearn.KMeans : how to avoid Memory or Value Error?

c# - 获取像素值 "Under"当前窗口

c# - 如何为 ZPL ZEBRA 打印生成动态 GRF 图像

c# - 使用 Windows 语音识别时麦克风音量的最小截止值