我正在学习Udacity课程中的哈希桶,我想知道在Ruby中创建哈希时会创建多少个哈希桶。我对散列函数不太感兴趣,散列函数是在桶中分配值并在恒定时间内进行查找的函数。我更关心桶的数量和每个桶中的对象数量。
我的主要问题:
1.一般来说,Ruby使用什么样的算法来确定创建了多少桶以及每个桶中存储了多少个键值列表? Ruby如何在幕后做到这一点?
2. Ruby中的哈希/字典是一个类似哈希桶的哈希吗?
答案 0 :(得分:-2)
Ruby没有做任何事情。 Ruby语言规范没有为Hash
类指定任何特定的实现策略,它只指定了它的语义。事实上,ISO Ruby语言规范甚至不能保证O(1)访问。
每个Ruby实现都以不同方式实现Hash
。在IronRuby中,RubyHash
只是继承自.NET Dictionary<object, object>
。 Rubinius最近改用了HAMT(Hash Array Mapped Trie),这意味着它甚至不再使用哈希表了。
如果您想知道某个特定的Ruby实现如何实现Hash
类,您将不得不查看该特定Ruby实现的源代码。