LinkedHashMap和LinkedHashSet中没有ListIterator

时间:2014-10-09 11:17:57

标签: java listiterator

虽然文档明确指出LinkedHashMap和LinkedHashSet

  

维护一个贯穿其所有条目的双向链表

我不明白为什么这些实现不会返回ListIterator来导航next和previous。 是否有人意识到引擎盖下的局限性?

2 个答案:

答案 0 :(得分:3)

ListIterator打开了在迭代器"的当前位置插入"的可能性。但是这打破了LinkedHashMap / Set本身强加的排序,因为他们的合同表明列表顺序将严格等于插入顺序。

答案 1 :(得分:0)

您不能直接遍历键/值对的数据结构,而不是集合。即使在内部存在一个记住插入顺序的双向链表,您仍然必须以标准方式获取迭代器。

这些数据结构上有一些方法可以返回键,值或条目(键+值)的集合:keySet()values()entrySet(),您可以从中获取迭代器

也许你想要的是map.entrySet().iterator(),虽然我同意这是一套,而且订单在技术上没有明确规定......