C# 如何存储50000个英语单词,以便尽可能少地占用内存

C# 如何存储50000个英语单词,以便尽可能少地占用内存,c#,data-structures,trie,C#,Data Structures,Trie,我必须在内存中存储大约50000个英语单词,我想知道在内存占用(和加载速度)方面,什么是最好的数据结构。这会是一次旅行吗?如何将其序列化为文件?还有比这更好的吗 本质上,一旦~50000个单词被加载到内存中,我只需要检查这个单词是否存在。根据答案,这个类就是您所需要的。根据MSDN文档,您应该使用以下方法访问数据: 如果代码经常尝试访问,请使用TryGetValue方法 字典中没有的键。使用这种方法更有效 比捕获项引发的KeyNotFoundException更有效 财产 根据答案,这门课就是你

我必须在内存中存储大约50000个英语单词,我想知道在内存占用(和加载速度)方面,什么是最好的数据结构。这会是一次旅行吗?如何将其序列化为文件?还有比这更好的吗

本质上,一旦~50000个单词被加载到内存中,我只需要检查这个单词是否存在。

根据答案,这个类就是您所需要的。根据MSDN文档,您应该使用以下方法访问数据:

如果代码经常尝试访问,请使用TryGetValue方法 字典中没有的键。使用这种方法更有效 比捕获项引发的KeyNotFoundException更有效 财产

根据答案,这门课就是你所需要的。根据MSDN文档,您应该使用以下方法访问数据:

如果代码经常尝试访问,请使用TryGetValue方法 字典中没有的键。使用这种方法更有效 比捕获项引发的KeyNotFoundException更有效 财产


提出了一种字典对象。 请阅读以下内容:

有关实施的帮助,请阅读以下内容:

要序列化dictionary对象或哈希表,请阅读此引用:


建议使用字典对象。 请阅读以下内容:

有关实施的帮助,请阅读以下内容:

要序列化dictionary对象或哈希表,请阅读此引用:


是的,trie听起来适合这个。对于序列化,您有两个选项:

  • 使用原始单词列表并重建trie。我想,它应该足够快,但你可能想分析一下
  • 只需对类型使用普通的.NET序列化,并将其转储到文件中即可。但这会阻止其他语言的程序读取它

  • 是的,trie听起来不错。对于序列化,您有两个选项:

  • 使用原始单词列表并重建trie。我想,它应该足够快,但你可能想分析一下
  • 只需对类型使用普通的.NET序列化,并将其转储到文件中即可。但这会阻止其他语言的程序读取它

  • 嗯,根据您提供的指导原则,一个简单的
    列表
    会更好

    提取时间明显比
    Trie
    字典
    慢,但是

    “在内存占用(和加载速度)方面”

    它只需要很少的内存开销,而且加载速度更快(因为没有建立索引/前缀数据结构)


    有关一些内存比较的详细信息,请参见本文(在JavaScript中,但仍然适用)。

    好吧,根据您提供的指南,一个简单的
    列表将更好

    提取时间明显比
    Trie
    字典
    慢,但是

    “在内存占用(和加载速度)方面”

    它只需要很少的内存开销,而且加载速度更快(因为没有建立索引/前缀数据结构)


    有关一些内存比较的详细信息(在JavaScript中,但仍然适用)。

    当然,如果选择是»Dictionary或Hashtable«,则选择Dictionary。但他们的问题甚至暗示他们可能需要Trie。我选择了一个错误的引用,但我的意图是显示Dictionary类的信息。如果选择»Dictionary或Hashtable«,则最好选择Dictionary。但他们的问题甚至暗示他们可能需要Trie。我选择了一个错误的引用,但我的意图是显示Dictionary类的信息。更好的参考是