我们是否有除Array
以外的任何可用数据结构,以便将其用作实现HashMap的哈希算法中的存储区
固定长度Array
需要进行重新散列(一旦达到阈值,就将元素传输到新容量桶)。
感谢您的投入。
答案 0 :(得分:3)
在谈论替代方案之前,让我们谈谈人们喜欢使用数组作为桶结构的一些原因:
如果您将数组替换为其他数据结构,则可能需要在执行此操作时支付某种额外费用。
一种不使用顶级表的方法是extendible hashing,它通过使用trie作为其桶结构来工作。哈希码被视为某个基数(例如,基数为2)中的数字,并且通过遍历特里数量的位或数字找到元素以找到您正在寻找的对象。当水桶变得太满时,它们会被分开,这确实需要改变一些东西,但这个数量可以控制。这种方法的缺点是查找速度较慢。对于初学者,你必须遵循一些指针才能到达你的最终元素,这通常具有较差的引用位置。其次,如果您的哈希码很长(例如,它们中有k位),则查找的成本变为O(k)而不是O(1)。对于大k(例如,128位散列),这可能需要相当长的时间。