哈希映射中的单独链接
Separate chaining in hash map
我对separate chaining的理解是,我们把一个大数转换成一个小数,这样我们就可以把它当作一个索引。但是我们如何处理大索引呢?比如我的hash_map当前size是10,通过hash函数计算出来的一个新索引是55,那我的hash_map是不是每次新索引太大的时候都需要重新调整大小?
谢谢!
一种常见的技术是使用一个哈希函数来计算一些整数(通常是 32 位或 64 位),然后通过 [=14] 将数字减少到哈希 table 中的有效索引=]将该整数乘以 table 大小。例如,如果您有一个 10 元素哈希 table 并且您的哈希代码是 55,您将计算 55 mod 10 = 5 并将该项目放在索引 5.
根据您的编程语言,这里可能需要处理一些边缘情况(例如,如果哈希码可能为负,您需要确保您的索引为正),但这个总体思路非常有效并且用于许多常见的哈希 table 实现。
我对separate chaining的理解是,我们把一个大数转换成一个小数,这样我们就可以把它当作一个索引。但是我们如何处理大索引呢?比如我的hash_map当前size是10,通过hash函数计算出来的一个新索引是55,那我的hash_map是不是每次新索引太大的时候都需要重新调整大小?
谢谢!
一种常见的技术是使用一个哈希函数来计算一些整数(通常是 32 位或 64 位),然后通过 [=14] 将数字减少到哈希 table 中的有效索引=]将该整数乘以 table 大小。例如,如果您有一个 10 元素哈希 table 并且您的哈希代码是 55,您将计算 55 mod 10 = 5 并将该项目放在索引 5.
根据您的编程语言,这里可能需要处理一些边缘情况(例如,如果哈希码可能为负,您需要确保您的索引为正),但这个总体思路非常有效并且用于许多常见的哈希 table 实现。