当前位置:  开发笔记 > 编程语言 > 正文

改进了集合迭代器

如何解决《改进了集合迭代器》经验,为你挑选了3个好方法。

就个人而言,我发现java.util.Iterator提供的功能范围相当可怜.至少,我想要的方法如下:

peek()返回下一个元素而不向前移动迭代器

previous()返回前一个元素

虽然有很多其他的可能性,比如first()和last().

有谁知道这样的第三方迭代器是否存在?它可能需要作为java.util.Iterator的装饰器实现,以便它可以使用现有的Java集合.理想情况下,它应该是"泛型意识".

唐先生,提前谢谢



1> William..:

previous()只需使用一个即可轻松获得java.util.ListIterator.

通过这样做,可以轻松实现这一点

public  T peek(ListIterator iter) throws NoSuchElementException {
    T obj = iter.next();
    iter.previous();
    return obj;
}

不幸的是,将它作为实用程序方法会更容易,因为每个集合类都实现了自己的迭代器.要做一个包装器来在某个界面上获取每个集合的peek方法,这MyListIterator将是相当多的工作.



2> Lou Franco..:

我认为这些没有实现的原因是因为它们对某些集合来说并不重要,并且会产生很大的性能影响.我认为你可以非常简单地为你关心的收藏品做这项工作.

我也不喜欢Java迭代器无法在不移动的情况下获取当前值(因此您无法轻松编写基于该值的分支代码,只需传递迭代器 - 您必须传递值现在也有).



3> ykaganovich..:

Apache Commons Collections

Google Collections

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有