hashmap1.7和1.8的区别

底层结构:

        hashmap1.7底层结构是entry数组+链表,

        hashmap1.8底层结构是node数组+链表+红黑树

扩容策略:7上8下(7前8后)

        1.8会保持原链表的顺序并且在元素插入后检测是否需要扩容,扩容后,不会把所有元素重新计算一遍位置;

        1.7会颠倒链表的顺序并且在元素插入前检测是否需要扩容,扩容后,把所有元素重新计算一遍位置,为了降低hash冲突;

Hashmap中文名哈希映射,是基于哈希表的 Map 接口的实现,HashMap是一个用于存储Key-Value键值对的集合。

相同key,新值会在数组的位置把旧value值覆盖掉,并返回旧的value值,如果是不同key,但是key计算出来的hash一样,则会在数组中,按照7上8下生成链表;

1.8什么时候转红黑树,什么时候退化成链表

红黑树的出现时机(链表树化):1. 链表的长度达到8; 2. 元素的总数量达到64。

底层数组类型:

        1.7数组类型:entry数组

        1.8数组类型:node数组

1.7:

hashMap线程不安全?hashMap在多线程的环境下,会出现什么问题?

1.会出现丢值 2.会出现环链

总结:

1:hashMap底层结构是Entry数组+单项链表

2

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stone.小小的太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值