Java Hashmap Tail Traversing

2022-09-03 17:51:11

尾遍历在Java Hashmap中意味着什么?Java 反转具有多个元素的(链表)存储桶。反转是为了避免尾部遍历和向头部添加元素。我无法理解这个概念。


答案 1

我来到这个博客寻找关于尾巴穿越的答案,现在我有一个顿悟

Dhananjayan,这基本上意味着尾部遍历是链表中的一个概念。我将尝试用一个例子来解释这一点。假设您要将以下元素添加到单链表

23, 65, 44, 12, 90

好吧,现在好了。您添加了 5 个元素。所以过了一段时间,你需要添加一个新的元素10。因此,如果我们的算法将元素添加到链表的末尾,它必须遍历这五个元素才能找到尾巴,这在冗长的链接列表的情况下可能非常昂贵。因此,一种有效的方法是将新元素添加到头部而不是尾部,并将head指针更改为指向新 head.so 在这种情况下,当您添加新元素10时,链表将如下所示

10, 23, 65, 44, 12, 90

如您所见,这是一种非常有效的方法。

我现在回答你的第二个问题(它们所说的反转是什么意思?因此,在哈希图中,当他们调整大小/重新哈希时,他们从head开始从链接列表中提取元素,然后制作一个新的链接列表并按顺序添加后续元素,因此每次迭代的结果将是

  • 10
  • 23 10
  • 65 23 10
  • 44 65 23 10
  • 12 44 65 23 10

  • 90 12 44 65 23 10

所以这是向head添加新元素的结果 简而言之,这是一个LIFO(最后一个在先出)结构。

菲利普


答案 2

回答苏菲安的问题。是的,对于遍历是正确的,我们需要遍历整个链表。但此线程仅与哈希冲突解析有关。解决冲突的方法之一是重构存储在存储桶中的整个链表。因此,哈希映射从旧链接列表创建一个新的链接列表。而这种小径穿越只发生在娱乐的那段时间。