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冲突的话,那么其实就不会造成扩容

相关内容

热门资讯

原创 李... “来李庄不吃三绝,等于白来!”老茶馆里飘出的这句话,道出了古镇美食的灵魂。白肉薄如蝉翼,白糕软糯化渣...
原创 建... 每天早上纠结吃啥,想必是不少人的小烦恼,既想做得省事,又盼着吃得营养。一日三餐里,早餐真的不能敷衍,...
原创 初... 一、清热祛湿汤品 1. 冬瓜薏米排骨汤 食材:排骨300g、冬瓜400g、薏米50g、姜片、盐 做...
“江湖”好物出征草原 拉满赛场... 5月30日,通辽体育中心体育场,东北超第二轮鸡西对阵通辽的比赛还没开球,赛场外已经先“热”了起来。 ...
原创 告... 编辑:[太阳] 我们现在吃到的很多西红柿,早就不是老味道里的那颗西红柿了,它看着更红、更圆、更硬、更...