JDK7和JDK8中HashMap实现的区别?

在JDK7中,HashMap是基于一个数组和多个链表的实现(位桶+链表),当遇到散列冲突时,就将对应的元素以链表的形式储存。但是这样子的话HashMap的性能就会比较低,因为如果当数据比较多,发生冲突的元素也会越来越多,这时候链表中就会存储有很多元素,在查找上会消耗O(n)的时间。

因为在最坏的情况,链表的时间复杂度为O(n),而红黑树为O(logn),当链表中的元素达到某个阀值时,使用红黑树的效率会比较高。

所以在JDK8中,采用的是位桶+链表/红黑树的方式,也是非线程安全的,当同一个hash值的节点数不小于8时,将不再以单链表的形式存储了,会被调整成一颗红黑树,这就是JDK7与JDK8中HashMap实现的最大区别。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值