【发布时间】:2015-07-09 16:28:17
【问题描述】:
是否可以检索 LinkedHashMap 的下一个(下一个,如已插入的下一个键值)键值?
例如。当前键值为2,下一个键值为4。我想使用下一个键的值而不进一步设置我的迭代器(或任何其他)一个索引。显然使用一个迭代器似乎并不能完成这项工作。另一个想法是将myHashMap.keySet() 返回的集合转换为其他实现类,但我不确定是否可以检索下一个元素。
有什么想法吗?
【问题讨论】:
-
当我使用 LinkedHashMap 时,我会将 next 定义为下一个键值。
-
公共 API 没有提供在 O(1) 中执行此操作的方法。来自
keySet的Iterator是您最好的选择,但是您必须一直遍历它直到您的密钥,然后获取next(如果有的话)。 -
没关系,我是这样解决的:
LinkedList<Datatype> linkedList = new LinkedList<>(); linkedList.addAll(myHashMap.keySet());这对我来说非常好,并且可以保留订单。 -
这完全等同于密钥集
Iterator。不是遍历迭代器,而是遍历链表。 (除了现在您将所有内容复制到另一个数据结构中。)LinkedList访问是 O(n)。 -
我从来没有要求过 O(1) 的解决方案,但那是行不通的。我想要一个可窥视的
Iterator。正如我的问题所述,只有一个迭代器是不可能的。
标签: java iterator linkedhashmap