浅谈HashMap的put方法

本文深入探讨了HashMap的put方法,揭示了其在JDK1.8中的实现细节。当链表长度达到8时,HashMap会将链表转换为红黑树,但在此之前会检查数组长度是否超过64,小于64则优先扩容。put过程包括:检查空数组、定位插入位置、处理已存在键值对或链表/红黑树的插入,并在元素数量超过阈值时进行扩容。文章详述了这些步骤,有助于理解HashMap的内部工作机制。
摘要由CSDN通过智能技术生成

hashmap的put方法

hashmap的结构是数组+链表的(jdk1.8)或者是数组+红黑树,在链表长度大于阈值8的时候(默认是8),会将链表转换为红黑树,在转换之前会判断一下当前的数组长度是否大于64,如果小于64,会将数组进行扩容而不进行将链表转换为红黑树。

1.判断当前的hashmap长度是否为零或者等于null,是就resize(),否则往下走
2.根据key找到数组的下标,找到该数组,看该位置是否等于null,是的话,直接插入,否的话,看key是否存在,是的话直接覆盖value,否的话看当前的数组是否是红黑树,是的话在红黑树中直接插入,否则他就是链表,遍历链表,看key是否存在于这个链表当中,若在,就覆盖value,若不在,就将key插入到链表的尾部(尾插法)。
3.最后判断 一下当前的 hashmap中的元素个数是否大于threshold( capacity * loadFactor ),如果大于的话,就进行扩容,默认是扩大为原来的2倍。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值