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

相关内容

热门资讯

文博场馆优化提升 “双奥园区”... 观众在中国考古博物馆参观 朝阳区持续探索奥运场馆赛后可持续运营路径,推动各场馆提质增效。北京青年报记...
怎么挑选适配不同场景的儿童游乐... 随着亲子消费业态的发展以及城市公共服务配套的不断完善,各类游乐设施的市场需求持续增长,不同场景、不同...
发布会深一度|金色吉林,已备好... (来源:中国吉林网) 转自:中国吉林网 图片来源 图虫创意 金风送爽,吉林大地迎来了层林尽染的最美...