JAVA-JDK1.7/JDK1.8之HashMap区别篇

上篇分别说了JDK1.7和1.8版本的HashMap具体源码解析, 但这俩者具体是有啥区别?且听这回详解

不管是1.7还是1.8的HashMap,首先我们要明确HashMap是线程不安全的!!!

数据结构:JDK1.7采用的是数组+单链表结构;JDK1.8采用数组+链表+红黑树结构

数据插入操作:JDK1.7是采用头部插入数据,在get查询的时候能够快速的查找到数据,但是因为采用头插法可能会出现环形链表甚至死锁的现象;JDK1.8因为具有红黑树的结构,所以是采用尾部插入数据,能够避免头部插入带来的问题

扩容时机:JDK1.7是先判断是否需要扩容,然后再put,JDK1.8是先put后判断是否需要扩容

扩容操作:JDK1.7扩容时是将老数组的数据重新hash写入到新数组中,JDK1.8中键的hash值是不会改变的,是根据(hash&oldCap)==0进行链表分散

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值