HashMap是头插法还是尾插法

1,004 阅读1分钟
  • JDK1.8以前是头插法,JDK1.8及以后是尾插法
  • 为什么要从头插法改成尾插法?
    • 因为多线程头插法会造成死链,但一般多线程直接使用concurrentHashMap
    • JDK1.7用头插是考虑到了一个所谓的热点数据(新插入的数据可能会更早用到),但这其实是个伪命题,因为JDK1.7中rehash的时候,旧链表迁移新链表的时候,如果在新表的数组索引位置相同,则链表元素会倒置(就是因为头插) 所以最后的结果 还是打乱了插入的顺序 所以总的来看支撑JDK7使用头插的这点原因也不足以支撑下去了 所以就干脆换成尾插 一举多得