可重启的链接哈希映射迭代,可以通过番石榴

时间:2011-05-02 16:41:36

标签: java guava

Guava的AbstractLinkedIterator课程

似乎存在允许在LinkedHashMap之类的中间重新启动迭代。但我没有在番石榴中找到任何可以归还此类的课程。事实上,是否有办法通过其中一个的子类迭代LinkedHashMapLinkedHashMultimap

3 个答案:

答案 0 :(得分:3)

AbstractLinkedIterator,正如其Javadoc所述:

  

为序列提供Iterator接口的骨架实现,其下一个元素总是可以从前一个元素派生。

这就是它的全部。它对LinkedHashMap中当前链接的条目没有任何了解。如果您可以访问链接结构的节点并且使其成为Iterator<Node>,那么您当然可以计算前一个节点的下一个节点,但LinkedHashMap不会公开其链接的条目。

答案 1 :(得分:2)

This link表示目前尚无用处(02/05/2011),我当然也找不到任何用途。查看源代码,这是一个非常骨架实现,它只是调用它的继承者来询问它们下一个可能基于当前元素的内容,但你必须自己实现它的内容(这可能确实给你的迭代器可以从某个有序集/列表中的任何点开始)。你想做什么?

答案 2 :(得分:0)

AbstractLinkedIterator对于创建代表重复的IteratorIterable非常有用 - 例如具有素数等的潜在无限Iterable

如果您需要重新启动迭代,只需使用Iterable创建新的Iterator