我必须在内存中存储大约50,000个英文单词,我想知道在内存占用(和加载速度)方面最好的数据结构。它会成为特里吗?我如何将其序列化为文件?还有什么比这更好的吗?
基本上,一旦将~50,000个单词加载到内存中,我只需要检查单词是否存在。
答案 0 :(得分:1)
嗯,根据您提供的指南,简单的List
会更好。
提取时间明显慢于Trie
或Dictionary
,但
“在内存占用(和加载速度)方面”
它将需要非常少的内存开销,并且加载速度更快(因为没有构建索引/前缀数据结构)。
有关内存比较的详细信息,请参阅此blog post(在JavaScript中,但仍然适用)。
答案 1 :(得分:0)
根据this回答,Dictionary课程就是您所需要的。根据MSDN文档,您应该使用TryGetValue方法来访问您的数据:
如果您的代码经常尝试访问,请使用TryGetValue方法 不在字典中的键。使用这种方法更多 比捕获Item抛出的KeyNotFoundException更有效 属性。
答案 2 :(得分:0)
提出了一个Dictionary对象。 阅读这些:
Most efficient in-memory data structure for read-only dictionary access
Why is Dictionary preferred over hashtable?
有关实施的帮助,请阅读:
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
对于序列化字典对象或哈希表,请阅读以下参考:
http://blogs.msdn.com/b/adam/archive/2010/09/10/how-to-serialize-a-dictionary-or-hashtable-in-c.aspx
答案 3 :(得分:0)
是的,特里听起来还不错。对于序列化,您有两种选择: