如果两个或多个对象存储在同一索引中,LinkedHashMap如何保持顺序



如果两个或多个对象存储在同一索引中,LinkedHashMap如何维持秩序

如果linkedlist中的两个元素找到了相同的哈希代码,那么它们将存储在相同的索引中,但节点不同。在这种情况下,它将如何找到正确的顺序。

假设第一个元素位于索引2,第二个元素位于索引号3,第三个元素也位于索引3,第四个元素位于下标2,第五个元素位于基于哈希码的索引3。

在这种情况下,它是如何维护插入顺序的??

LinkedHashMapHashMapLinkedList的组合。

HashMap允许快速查找
LinkedList维护插入顺序。

阅读文档,即javadoc,它解释了这一点:

哈希表链表Map接口的实现,具有可预测的迭代顺序。此实现与HashMap的不同之处在于,它维护了一个贯穿其所有条目的双链表。该链表定义迭代顺序,通常是将键插入映射的顺序(插入顺序(。请注意,如果键被重新插入到映射中,则插入顺序不受影响。(如果m.put(k, v)被调用,则密钥k被重新插入到映射m中,而m.containsKey(k)将在调用之前立即返回true。(

请不要将维护属于同一哈希桶的键的数据结构(通常是链表(与用于维护插入顺序的链表混淆。他们彼此完全不同。此外,最近版本的HashMap使用树结构,而不是简单的链表,来维护哈希桶中的密钥。

最新更新