HashMap理解

阅读 57

2022-04-06

HashMap是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一,因为通过HashMap可以引出很多知识点,比如数据结构(数组、链表、红黑树)、equals和hashcode方法。

默认大小、负载因子以及扩容倍数
底层数据结构
如何处理hash冲突
如何计算key的hash值
数组长度为什么是2的幂次方
查找、插入、扩容过程

1.数据结构

  1. JDK1.8:HashMap有数组+链表+红黑树构成
  2. 当一个值需要存储到HashMap的时候,根据Key来计算出他的Hash值,通过Hash来存储到数组的位置。如果发送Hash冲突就以链表形式存储;Hashmap会把这个链表转换成红黑树类存储;
  • 如图所示

2.HashMap基本属性

Table数组存储着Node对象,Node是HahsMap的内部类,表示一个Key-Value

HashMap数据结构总结


为什么table数组永远是2的幂次方

答:HashMap通过一个tableSizeFor确保数组长度永远是2的幂次方

什么地方使用到了tableSizeFor

答:构造方法中调用threshold(容量阈值)

HashMap:查找

HashMap:插入

HashMap:删除

Equals和HashCode

精彩评论(0)

0 0 举报