hashMap不同版本的区别
admin
2024-01-20 23:38:02
  • HashMap在1.7中是由 数组+链表 也可以说 哈希表+链表 实现的

  • HashMap在1.8中是由 数组+链表 +红黑树

  • JDK1.7中,HashMap存储的是Entry对象

    JDK1.8当中,HashMap存储的是实现Entry接口Node对象

  • JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法

    • 为什么从头插法改成尾插法?

      在1.7中,是没有红黑树的并发的情况下单链表过长会成环发生死循环

      在1.8中,尾插法就可以解决这个问题

  • 扩容机制

    • JDK1.7的时候是先扩容后插入的,扩容过程中会将原来的数据,放入到新的数组中,但是会重新计算hash值进行分配,这样就会导致无论这一次插入是不是发生hash冲突都需要进行扩容,如果这次插入的并没有发生Hash冲突的话,那么就会造成一次无效扩容

      但是在1.8的时候是先插入再扩容的,优点是可以减少1.7的一次无效的扩容,因为如果这次插入没有发生Hash冲突的话,那么其实就不会造成扩容

相关内容

热门资讯

2025海上丝绸之路城市合作发... 11月18日至20日,以“融创融汇 合作共赢”为主题的2025海上丝绸之路城市合作发展大会暨国际旅行...
洛福敦群岛:挪威北极光下的世外... 挪威的洛福敦群岛,犹如一颗镶嵌在北极圈内的璀璨明珠,以其壮丽的自然景观和神秘的极光闻名于世。这里的雪...
“只有河南”景区无烟化管理获游... 近日,有网友在社交平台发帖称,去过“只有河南·戏剧幻城”(以下简称“只有河南”)后才发现景区禁烟保持...
四川TOP100餐厅出炉!成都... 🔥你知道吗?四川美食又上热搜了!最近高德扫街榜发布‘烟火四川’榜单,成都直接拿下58家餐厅,乐山小吃...
原创 奶... 走在2025年的城市街头,奶茶店看着比以前还琳琅满目。 高端商场里的连锁品牌、社区小巷的小众门店,几...