【发布时间】:2020-08-24 15:58:28
【问题描述】:
我对分离链的理解是,我们将一个大数转换成一个小数,这样我们就可以将它用作索引。但是我们如何处理大索引呢?比如我的hash_map当前大小是10,hash函数计算出来的新索引是55,那么每次新索引太大时我需要重新调整hash_map的大小吗?
谢谢!
【问题讨论】:
标签: algorithm data-structures hashmap hashtable
我对分离链的理解是,我们将一个大数转换成一个小数,这样我们就可以将它用作索引。但是我们如何处理大索引呢?比如我的hash_map当前大小是10,hash函数计算出来的新索引是55,那么每次新索引太大时我需要重新调整hash_map的大小吗?
谢谢!
【问题讨论】:
标签: algorithm data-structures hashmap hashtable
一种常见的技术是使用一个哈希函数来计算某个整数(通常是 32 位或 64 位),然后通过将该整数修改为表大小,将数字减少为哈希表中的有效索引。例如,如果您有一个 10 元素的哈希表并且您的哈希码是 55,那么您将计算 55 mod 10 = 5 并将该项放在索引 5 处。
根据您的编程语言,此处可能需要处理一些边缘情况(例如,如果哈希码可能为负,您需要确保索引为正),但这个总体思路非常有效并被使用在许多常见的哈希表实现中。
【讨论】: