【发布时间】:2019-12-20 13:47:03
【问题描述】:
我无法理解 Hash 函数的作用和不作用,以及 Bucket 到底是什么。
据我了解:
HashTable 是一种使用哈希函数将键映射到值的数据结构。
HashFunction 旨在将数据从任意/未知大小的数组映射到固定大小的数据数组。
原始数据数组中可以有重复的Values,但这无关紧要。
每个值都有一个唯一的键。因此,每个 Key 正好有 1 个 Value。
HashFunction 将为每个 (Value, Key) 对生成一个 HashCode。但是,当多个(值、键)对映射到同一个 HashCode 时,可能会发生冲突。
这可以通过使用链式/开放式寻址方法来解决。
HashCode 是指示特定条目在 Bucket 数组中的原始数据数组中的位置的索引值。
Bucket 数组是构造的固定数据数组,将包含原始数组中的条目。
我的问题:
如何为每个值生成密钥? HashFunction 是否意味着为每个条目生成 Key 和 HashCode 值?因此每个 Bucket 是否只包含一个条目(假设使用 Chaining 实现来补救冲突)?
【问题讨论】: