虽然文档明确指出LinkedHashMap和LinkedHashSet
维护一个贯穿其所有条目的双向链表
我不明白为什么这些实现不会返回ListIterator来导航next和previous。 是否有人意识到引擎盖下的局限性?
答案 0 :(得分:3)
ListIterator打开了在迭代器"的当前位置插入"的可能性。但是这打破了LinkedHashMap / Set本身强加的排序,因为他们的合同表明列表顺序将严格等于插入顺序。
答案 1 :(得分:0)
您不能直接遍历键/值对的数据结构,而不是集合。即使在内部存在一个记住插入顺序的双向链表,您仍然必须以标准方式获取迭代器。
这些数据结构上有一些方法可以返回键,值或条目(键+值)的集合:keySet()
,values()
,entrySet()
,您可以从中获取迭代器
也许你想要的是map.entrySet().iterator()
,虽然我同意这是一套,而且订单在技术上没有明确规定......