Java基础面试题之===集合篇
1:说一说HashMap的原理
核心三大点:hashmap怎么存数据、hash冲突了怎么办?、怎么进行扩容?
HashMap怎么存数据:
怎么算hash值:
对象.hashcode得到32位int,高16和低16位进行异或。
目的是:
hash分布更离散,减少hash碰撞
怎么算索引值:(2的n次方)
(数组长度-1) 按位与 hash
核心三大点:hashmap怎么存数据、hash冲突了怎么办?、怎么进行扩容?
HashMap怎么存数据:
怎么算hash值:
对象.hashcode得到32位int,高16和低16位进行异或。
目的是:
hash分布更离散,减少hash碰撞
怎么算索引值:(2的n次方)
(数组长度-1) 按位与 hash