散列表应该是最大的大小是多少?

Jim*_*kie 2 size hashtable max

对于普通编程语言的哈希表实现来说,有多大?

说我想创建一个玩Shiritori游戏的程序.在用户输入单词后,如果该单词存在,则程序需要查找字典.为了防止持续的平面文件读取,在程序中加载100,000多个单词到一个哈希表开始一个明智的解决方案?

Sal*_*iti 5

那么这种数据有专门的数据结构和算法.例如,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字节的字符串,这是一个非常小的数量.