java集合之HashMap

来源:互联网 发布:软件企业专项审计 编辑:程序博客网 时间:2024/05/11 16:20

java技术交流群(群号:477819525)欢迎大家加入。本群每天下午4-6点展开技术交流。

本文是对群里的研讨进行的一个整理记录,如有遗落,或则错误欢迎大家拍砖!

1.HashMap是什么

HashMap是java版 hash算法的一个非同步实现(不是线程安全的),其key和value都可以为null。HashMap是一种“链表散列”,即数组和链表结构,它不保证遍历的顺序。所谓的“链表散列” 通俗点就是一个数组里面的每一个元素都是一个链表,在HashMap里面的实现是 定义了一个Node数组 ,其Node实现了Map.Entry.


jdk8中,当单个链表的深度大于一个值时(默认为8),该链表将会被转换成红黑树。


2.HashMap特点

获取数据时,因为其数据结构,只需要经过几次对比就能获取到数据。


3.适用场景

需要进行键值对存储的情况。


4.实现原理

通过计算key的hashCode然后与高16位进行运算,然后在进行取馍获取到数组下标,在出现hash碰撞的情况将数据保存到链表里面,

如果链表的深度超过8,,将链表转换成红黑树

(1):put方法实现,

 


 (1) .resize方法实现

1 0
原创粉丝点击