面试官经常问到的一个问题,hashmap是如何实现的?今天我们就来说下原理
什么是hashmap?
map就是用于存储键值对(<key,value>)的集合类,也可以说是一组键值对的映射。而hashmap就是将key进行hash运算,得到目标元素在哈希表中的位置,然后再进行少量比较即可得到元素,这使得 HashMap 的查找效率极高
hash函数
根据输入的关键字得到固定长度的输出,通常是返回一个较大的整形。
hash映射
将通过hash运算得到的整数平均分配到指定位置,一般可以采用位运算或者模运算来实现。在性能方面,位运算的效率高于模运算。
寻址算法
地址是通过hash值映射得到的,那么hash映射后会出现不同的key对应到相同的地址,也就是所谓的hash冲突,为此解决冲突主要通过以下两种方法去寻址。
- 链表法:每个桶对应的是一个链表,通过遍历链表,找到对应的key。
- 开放地址法:根据初次映射的地址,遍历相邻的位置,找到对应的key。
算法实现
1 | package hashmap |
- 本文作者: Hongker
- 本文链接: https://hongker.github.io/2022/07/14/algorithm-hashmap/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!