就个人而言,我发现java.util.Iterator提供的功能范围相当可怜.至少,我想要的方法如下:
peek()返回下一个元素而不向前移动迭代器
previous()返回前一个元素
虽然有很多其他的可能性,比如first()和last().
有谁知道这样的第三方迭代器是否存在?它可能需要作为java.util.Iterator的装饰器实现,以便它可以使用现有的Java集合.理想情况下,它应该是"泛型意识".
唐先生,提前谢谢
previous()
只需使用一个即可轻松获得java.util.ListIterator
.
通过这样做,可以轻松实现这一点
publicT peek(ListIterator iter) throws NoSuchElementException { T obj = iter.next(); iter.previous(); return obj; }
不幸的是,将它作为实用程序方法会更容易,因为每个集合类都实现了自己的迭代器.要做一个包装器来在某个界面上获取每个集合的peek方法,这MyListIterator
将是相当多的工作.
我认为这些没有实现的原因是因为它们对某些集合来说并不重要,并且会产生很大的性能影响.我认为你可以非常简单地为你关心的收藏品做这项工作.
我也不喜欢Java迭代器无法在不移动的情况下获取当前值(因此您无法轻松编写基于该值的分支代码,只需传递迭代器 - 您必须传递值现在也有).
Apache Commons Collections
Google Collections