哈希表
经过前面那么多内容的学习, 我们现在可以真正实现自己的哈希表了.
可能你学到这里的时候, 已经感觉到数据结构的一些复杂性, 但是如果你仔细品味, 你也会发现它在设计时候的巧妙和优美, 当你爱上它的那一刻, 你也真正爱上了编程.
我们这里采用链地址法来实现哈希表:
实现的哈希表(基于storage的数组)每个index对应的是一个数组(bucket).(当然基于链表也可以.)
bucket中存放什么呢? 我们最好将key和value都放进去, 我们继续使用一个数组.(其实其他语言使用元组更好)
最终我们的哈希表的数据格式是这样: [[ [k,v], [k,v], [k,v] ] , [ [k,v], [k,v] ], [ [k,v] ] ]
创建哈希表
-
我们像封装其他数据结构一样, 先来创建一个哈希表的类: HashTable
代码解析:
- 我们定义了三个属性:
- storage作为我们的数组, 数组中存放相关的元素.
- count表示当前已经存在了多少数据.
- limit用于标记数组中一共可以存放多少个元素.
- 另外, 我们直接将哈希函数定义在了HashTable中
插入&修改数据
现在, 我们来做向哈希表中插入数据