[英]How to store 50,000 English words so that it takes as little memory as possible
我必须在内存中存储约50,000个英语单词,并且我想知道在内存占用量(和加载速度)方面最好的数据结构是什么。 会不会是特里? 如何将其序列化为文件? 有什么比这更好的了吗?
本质上,一旦将〜50,000个单词加载到内存中,我只需要检查该单词是否存在。
好吧,根据您提供的指南,简单的List
会更好。
提取时间显然比Trie
或Dictionary
慢,但是
“就内存占用量(和加载速度)而言”
它将需要很少的内存开销,并且加载速度更快(因为没有建立索引/前缀数据结构)。
有关某些内存比较的详细信息,请参见此博客文章 (在JavaScript中,但仍然适用)。
根据此答案,您需要的是Dictionary类。 根据MSDN文档,您应该使用TryGetValue方法访问数据:
如果您的代码经常尝试访问不在字典中的键,请使用TryGetValue方法。 使用此方法比捕获Item属性引发的KeyNotFoundException更有效。
提出了一个Dictionary对象。 阅读以下内容:
有关实施方面的帮助,请阅读以下内容:
http://msdn.microsoft.com/zh-CN/library/xfhwa508.aspx
要序列化字典对象或哈希表,请阅读以下参考:
http://blogs.msdn.com/b/adam/archive/2010/09/10/how-to-serialize-a-dictionary-or-hashtable-in-c.aspx
是的,这样做听起来很不错。 对于序列化,您有两种选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.