哈希

136 阅读1分钟

哈希是一种数据结构

键值对。

底层原理

基于数组。

1.key key——》哈希算法:得到哈希值。
为什么要使用哈希算法得到一个哈希值?因为这个哈希值是要拿来作为数组的索引的。
不能把key当做索引吗?

2.value


数组的索引 1.数字作为索引
数据不多的情况下,比如,最多几万个数据。

2.字符串作为索引
有的应用场景是没有数字的,只能使用字符串作为key。比如,字典。


但是数组只能把数字作为索引,怎么办? 把字符串按照某种算法转换为数字,比如,每个字母都有一个ASCII编码对应的数字。所以如果这个算法是基于ASCII编码 + 某种计算规则,就可以得到这个单词的数字,这个数字就可以作为数组的索引。


上面的算法有点简单,可能会带来一种问题,就是很多不同的单词计算之后得到的数字是一样的。怎么办?
使用更复杂的算法。这种更复杂的算法就是哈希算法。作用就是为了解决字符串——》数字作为数组索引带来的索引值相同的问题。

具体就是让字符串——》数字的值更加分散,更加大。这样就不容易重复。

3.key——》哈希算法:得到哈希值

速度

哈希的优点就是速度快,因为哈希数据结构基于数组,速度是1。

插入和删除呢?


缺点
数组大小固定。