hashmap为啥改成尾插法
时间: 2023-11-08 08:27:13 浏览: 194
Jdk1.8 HashMap实现原理详细介绍
HashMap 本来是使用链地址法来解决哈希冲突的,但是在 JDK 1.8 中改成了尾插法,主要原因是尾插法在扩容时可以更好地保持元素的顺序。
在 JDK 1.8 之前,HashMap 使用链地址法来解决哈希冲突,即使用一个链表来保存冲突的元素。但是,当链表过长时,查找速度会变慢。而且,在多线程环境下,链表可能会出现死循环的情况。
为了解决这些问题,JDK 1.8 中将 HashMap 的实现从链地址法改成了尾插法。尾插法的实现方式是,当发生哈希冲突时,将新的元素插入到链表的末尾,而不是链表的头部。这样可以保持元素的顺序,避免因为哈希值冲突而导致的链表过长和死循环的问题。
另外,尾插法还可以更好地支持并发操作,因为在多线程环境下,插入新元素时只需要对链表的尾部进行操作,不会影响其他元素的访问。
阅读全文