【问题标题】:How to make linked hash map navigable?如何使链接的哈希图可导航?
【发布时间】:2018-02-25 15:15:38
【问题描述】:

我有一个LinkedHashMap,其中UUID 键和我的自定义类的实例作为值。这些条目的顺序必须与插入顺序相同。 我需要处理条目,并且在处理过程中我想知道,我是否处理最后一个条目,并且我想移动到上一个或下一个实体。 看起来我需要NavigableMap(导航功能)和LinkedHashMap(保存插入顺序)之间的混合体。

我该如何解决这个问题,最好的方法是什么?如果 LinkedHashMap 元素是链接的,为什么我不能移动它?

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。在这里正确提问非常重要。看看How to Askminimal reproducible example。谢谢
  • 你能举个例子来演示用例和一些代码吗
  • 也许这会有所帮助:thebiasplanet.blogspot.com/2017/11/… 您可能可以在 Google 上搜索更多解决方案
  • 这是一个用例 - 我有一个任务列表,按照用户被写入的顺序。这个任务提出了一个过程。我需要执行这个过程。在正常情况下,它知道我必须按初始顺序执行每个任务。但是在任务执行之后我需要处理它,并且每个任务都可以将控制权转移到另一个任务——下一个、上一个或任何其他任务。而且我需要按顺序知道什么是任务号,可能是最后一个任务,我需要完成流程处理?

标签: java linkedhashmap


【解决方案1】:

ListOrderedMap 来自 Apache commons 提供您描述的功能。例如

ListOrderedMap<String, String> data = new ListOrderedMap<>();
data.put("2", "b");
data.put("1", "a");
data.put("5", "c");
System.out.println(data.firstKey());
System.out.println(data.lastKey());
System.out.println(data.get(1));
System.out.println(data.get("2"));

请注意,get 方法有 int(插入顺序)和 key 两种方法,都是 O(1),因为它由 HashMapArrayList 支持

【讨论】:

  • 哇,谢谢,我试试这个。但是代码示例正确吗?您说的是 ListOrderedMap,但示例中有一个 LinkedMap。
  • 以前不是,但现在是 ;-) LinkedMap 使用 LinkedList 而不是 ArrayList,这会使搜索速度变慢,但插入/删除速度更快。
  • 我认为这对我很有帮助。谢谢!
猜你喜欢
  • 2021-05-08
  • 2012-03-04
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多