【发布时间】:2014-12-04 07:15:22
【问题描述】:
虽然文档明确指出 LinkedHashMap 和 LinkedHashSet
维护一个贯穿其所有条目的双向链表
我不明白为什么这些实现不返回 ListIterator 来导航下一个和上一个。 有人知道引擎盖下的限制吗?
【问题讨论】:
标签: java listiterator
虽然文档明确指出 LinkedHashMap 和 LinkedHashSet
维护一个贯穿其所有条目的双向链表
我不明白为什么这些实现不返回 ListIterator 来导航下一个和上一个。 有人知道引擎盖下的限制吗?
【问题讨论】:
标签: java listiterator
ListIterator 开启了通过它们“在迭代器的当前位置”插入的可能性。但这打破了 LinkedHashMap/Set 本身强加的顺序,因为他们的合同规定列表顺序将严格等于插入顺序。
【讨论】:
您不能直接遍历键/值对的数据结构,它不是集合。即使在内部有一个记住插入顺序的双向链表,您仍然必须以标准方式获取迭代器。
在这些数据结构上有一些方法可以返回键、值或条目(键+值)的集合:keySet()、values()、entrySet(),您可以从中获取迭代器。
也许你想要的是map.entrySet().iterator() 这里,虽然我同意这是一组,而且顺序在技术上是未指定的......
【讨论】: