【问题标题】:What is the difference between "next" and "after" entries in LinkedHashMap?LinkedHashMap 中的“下一个”和“之后”条目有什么区别?
【发布时间】:2018-02-08 11:04:03
【问题描述】:

LinkedHashMap$Entry 类中的字段 nextafter 有什么区别?它并不总是产生相同的结果,有时它们持有相同的对象,有时则不是。我不明白为什么。

【问题讨论】:

    标签: java hashmap linkedhashmap


    【解决方案1】:

    next 属于HashMap.Node 基类。它包含对 HashMap 的当前 bin 中下一个条目的引用。

    afterLinkedHashMap.Entry 的一个属性,它根据迭代顺序(默认为插入顺序)保存对下一个条目的引用。

    两者没有理由持有相同的引用(除非插入顺序与条目存储在 bin 中的顺序相对应,即使这样,每个 bin 中的最后一个条目将始终具有next == null , 虽然它可以有一个不为空的after)。

    【讨论】:

    • 那么,如果它实际上是相同的参考,用例会是什么?
    • @YassineBadache 这不是同一个参考。 next 用于搜索键/添加键/删除键。 after 用于遍历键/条目/值。
    • 是的,我明白了,我的意思是,nextafter 引用同一个对象时的用例。它发生在我目前的工作中,我试图找到这个错误的答案:Map 的大小是 ,但有效表只包含 2 个元素。感谢您对这个主题的启发。
    • @YassineBadache 如果他们引用同一个对象,那是巧合,但不是错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2016-10-07
    • 2017-10-07
    • 2020-08-18
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多