【发布时间】:2018-02-08 11:04:03
【问题描述】:
LinkedHashMap$Entry 类中的字段 next 和 after 有什么区别?它并不总是产生相同的结果,有时它们持有相同的对象,有时则不是。我不明白为什么。
【问题讨论】:
标签: java hashmap linkedhashmap
LinkedHashMap$Entry 类中的字段 next 和 after 有什么区别?它并不总是产生相同的结果,有时它们持有相同的对象,有时则不是。我不明白为什么。
【问题讨论】:
标签: java hashmap linkedhashmap
next 属于HashMap.Node 基类。它包含对 HashMap 的当前 bin 中下一个条目的引用。
after 是LinkedHashMap.Entry 的一个属性,它根据迭代顺序(默认为插入顺序)保存对下一个条目的引用。
两者没有理由持有相同的引用(除非插入顺序与条目存储在 bin 中的顺序相对应,即使这样,每个 bin 中的最后一个条目将始终具有next == null , 虽然它可以有一个不为空的after)。
【讨论】:
next 用于搜索键/添加键/删除键。 after 用于遍历键/条目/值。
next 和 after 引用同一个对象时的用例。它发生在我目前的工作中,我试图找到这个错误的答案:Map 的大小是 ,但有效表只包含 2 个元素。感谢您对这个主题的启发。