HashMap工作原理

hashmap存储的为key-value键值对,get的时间复杂度是O(1),具体实现原理如下:

1. hashmap是基于数组之上,通过一定算法,用空间转换时间

2. hashmap的数据结构为数组+链表Entity<key,value>

3. 首先通过hash算法计算key的hash值,通过hash值和数组长度计算链表的索引值,jdk1.7 的算法为:h & (length-1),找到hash对应的链表,遍历链表,通过key的equal方法确认查找的最终位置

4. 当hashmap的负载因子>0.75时,扩展数组大小。

5. HashMap使用LinkedList来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList的下一个节点中。

6. 减少碰撞:使用不可变的、声明作final的对象,并且采用合适的equals()和hashCode()方法的话,将会减少碰撞的发生,提高效率。不可变性使得能够缓存不同键的hashcode,这将提高整个获取对象的速度

参考:http://www.admin10000.com/document/3322.html

原文地址:https://www.cnblogs.com/wolflowhereu/p/5254310.html