HashMap底层数据结构
- JDK8之前由数组+链表构成,通过hash算法取模存储
- JDK8之后采用数组+红黑树构成
put原理:
将key做hash,然后取模,根据余数存储到对应的位置 ,数组对象的元素包含 key,value,next,hash
hash冲突:
即key值hash取模后,数组位置已经被占用了,则这个时候,把上一个数组对象移动,当前对象存入进去,next指向上一个对象
get原理:
通过key值hash后取模,获取数组元素,如果这个值的hash值与当前value的值不一致,则取next,直到找到hash值一样的