首页 > 其他 > 详细

hashmap底层原理

时间:2018-06-16 12:37:19      阅读:209      评论:0      收藏:0      [点我收藏+]

从大的方向上来说,hashmap底层其实是采用数组+链表+红黑树的形式。

  在数据插入过程中,随着数据量的增大,hashmap里通过数组扩容,链表转红黑树形式来存储数据的。

  那么,数组扩容是什么时候进行扩容的呢?

  其实,数组扩容是根据数组阈值来判定是否扩容,hashmap设定初始数组的个数默认是16个,而阈值则通过初始数组个数X默认加载因子0.75,

  超过该阈值时,则链表(单链表)则转化为红黑树。

  hashmap的put过程:

  在put的时候,是先根据存入hashmap的key计算出其hash值的,如果该hash值在数组中是不存在的,直接在红黑树中创建新node(超过阈值的情况,否则还是以

  数组或者链表方式存储),如果hashmap是存在于链表上而不是在红黑树上(此时链表还未形成红黑树),就按照链表方式进行插入操作,如果该hashmap是已经存        在于红黑树的node节点上,就按照红黑树的插入方式进行插入。

  hashmap的get过程:

  在get的时候,也是先给句get的key值计算出hashmap值,如果该key在数组中(还未达到阈值扩容),则直接根据数组的位置找出值。如果key的hash值存在于链表         上(该hashmap链表还未形成红黑树),则根据链表方式获取值。如果key的hash值存在于红黑树上(数组已扩容,链表已转化为红黑树),则根据红黑树的查询方式       进行查询。

hashmap底层原理

原文:https://www.cnblogs.com/trling/p/9190133.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!