【问题标题】:LinkedHashMap with methods to access inner Linked ListLinkedHashMap 与访问内部链表的方法
【发布时间】:2013-01-07 00:35:01
【问题描述】:

我需要访问LinkedHashMap 内部的LinkedList。我希望能够同时访问尾部和头部。通过迭代器,我只能访问头部或尾部,这取决于构造时使用的访问顺序。

如何在O(1)中有效地访问内部列表的头部和尾部?

这个想法类似于 Apache Common Collection 的 LinkedHashMap.asList()(但我想避免将 Apache Commons Collections 添加为依赖项,因为我已经有 Guava)。

【问题讨论】:

  • 我猜你不能。
  • 不,做不到。你能解释一下你为什么要这样做吗?我们可能会建议另一种方法来解决您的问题。
  • LinkedMap 可能是最好的选择。 Guava 的 ImmutableMap 是有序的并为 keySet() 返回 ImmutableSet,它有一个 atList() 视图。所以它可以做到,但有点间接。

标签: java collections guava apache-commons linkedhashmap


【解决方案1】:

您只能通过反射访问内部 LinkedList。

通过反射,您可以使用 setAccessible(true) 访问私有成员 当 javas 安全管理器通过反射禁用私有访问时,这可能会失败。

另一种解决方案是使用 LinkedHashMap 的开源实现,然后将 getter 添加到内部列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2018-10-14
    相关资源
    最近更新 更多