码迷,mamicode.com
首页 > 其他好文 > 详细

hashmap-put方法过程

时间:2018-10-10 12:02:30      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:node   tab   break   说明   形式   ref   import   ash   hash   

1、执行hash(Object key)得到hash值,再判断table是否为空,为空表明这是第一个元素插入,则先resize,初次大小默认16。

2、若不需要初始化,则判断要插入结点的位置是否为空,也就是没有产生Hash地址冲突,是则直接放入table。

3、否则产生了冲突,那么有两种情况:key相同,key不同。

4、如果p是TreeNode的实例,说明p下面是红黑树,需要在树中找到一个合适的位置插入。

5、p下面的结点数未超过8,则以单向链表的形式存在,逐个往下判断:①如果下一个位为空,插入,并且判断当插入后容量超过8则转化成红黑树,break。②如果下一个位有相等的hash值,则覆盖,break。

6、判断新插入这个值是否导致size已经超过了阈值,是则进行扩容。


java7:新值插入到链表的最前面,先(判断)扩容后插入新值。
java8:新值插入到链表的最后面,先插值再(判断)扩容。

 

https://www.cnblogs.com/jzb-blog/p/6637823.html
http://www.importnew.com/28263.html

hashmap-put方法过程

标签:node   tab   break   说明   形式   ref   import   ash   hash   

原文地址:https://www.cnblogs.com/LinsenLi/p/9765337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!