c# - 用于识别重复值的数据结构

标签 c# data-structures

我正在运行相当大的搜索,并收到 System.OutOfMemoryException。

问题是我正在为我之前访问过的每个状态存储一个字符串键作为 HashSet<sting> .一旦达到大约 700 万个元素,它就会崩溃。我的想法是我不需要能够检索字符串,只需要识别它是否存在于集合中。

我似乎记得这种东西有专门的数据结构,但我一辈子都记不起它的名字了。如果我没记错的话,它有相当稳定的内存需求,你向它添加元素,它可以在一定程度上确定你是否已经向它添加了一些值。这是我编的,还是真的存在。有什么建议吗?

最佳答案

您可能正在考虑 Bloom filter .当您检查字符串是否在集合中时,它会为您提供概率结果。如果是的话,你总能找到它。如果不是,您仍然可以检测到它是,这取决于您集合中的其他内容。它的内存需求确实会根据您添加的唯一元素的数量而变化,但它低于 HashSet 将占用的空间。

关于c# - 用于识别重复值的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462752/

相关文章:

Java递归函数将列表转换为这种数据结构

c# - "Use of unassigned local variable"在 if 语句中与 TryParse 一起使用动态

algorithm - 在大 O 符号中找到效率

python - 如何在Python中存储嵌套数据?

c# - 单元测试项目是否可以加载目标应用程序的 app.config 文件?

algorithm - 数据结构 - 检查数组是否包含 2 个整数,第一个比第二个大 2 倍

c++ - 如何从 vector<int> 中删除重复项的所有实例

C# UI 多个 KeyDown 事件 ??窗体应用程序

c# - XCode 无法创建配置文件,ARKit

c# - C#中的蓝牙编程,移动设备和笔记本电脑之间的连接