那么这种数据有专门的数据结构和算法.例如,Patricia Trie或Radix Tree比字符串的哈希表空间效率更高,但当然,作为树,查找计算复杂度为O(log n)并且构建它是O(n log n).由于您是从文件中删除它,但是您可以以这样的方式编写文件,您可以将其加载到O(n)中.
C#中的Hashtable(Dictionary)以这样的方式实现它没有上限,除了它使用内部32位整数寻址(它肯定不能有超过2亿个项目).
字典中有100000个项目不算太多.使用垃圾收集器的语言更有问题的可能是你将有100000个分配的字符串,这对你的GC有一些压力.您可以获取有关仅运行它的实际应用程序内存占用的更多信息.
如果记忆是一个真正的问题,请寻找Patricia Trie和Radix Tree,非常适合存储单词词典.但是您可以开始使用字典并查看应用程序获得多少内存.
进行粗略计算,将字符串视为unicode,并考虑到英文中的平均单词是5.1字母(我在网上阅读)并考虑每个字符串加上32字节(对象和长度),您将获得最小的内存量(100000*(32 + 5*2))内存为4200000字节的字符串,这是一个非常小的数量.
| 归档时间: |
|
| 查看次数: |
9984 次 |
| 最近记录: |