我是靠谱客的博主 无辜烧鹅,最近开发中收集的这篇文章主要介绍浅谈Java中的:迭代器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上一次说到了Java中的集合,并且说到集合中为保证数据读取的共性与各子类的个性,Collection选择了迭代器来处理这层关系。那么接下来我们就来看看迭代器。

首先是迭代器遍历对象集合的使用方法:

Iterator<AdminAllVo> iterable = adminAllVos.iterator();while (iterable.hasNext()) {    System.out.print(iterable.next() + ",");}

其它类型的集合也是同理。

Java中的迭代器是一个接口,名为:Iterator,它下面主要有两个抽象方法:hasNext与next。hasNext方法主要用于判断还没有数据可用于访问,next方法用来访问集合的下一个数据。

但是通过观察Collection的源码我们可以知道,它继承的并不是Iterator接口而是Iterable接口。

而我们在Iterable就可以找到Iterator的影子,这说明Iterable中也可以使用hasNext与next方法,那为什么Collection不直接选择继承Iterator接口呢?

 这是因为无论是hasNext还是next都是基于当前迭代位置的,也就是说当有两个对象同时迭代一段数据时,前一个无论迭代到哪里,后一个就只能从当前位置开始迭代。如果前一个已经完成迭代,后一个直接就没有数据。

而Iterable中,无论何时都是返回的一个新的迭代器,且多个迭代器之间互不影响。

Iterable接口在Java中还有一个好处就是:如果你实现了Iterable接口并且按照要求返回了迭代器后,那么就可以使用for-each循环直接遍历数据。从而直接省略hasNext与next操作。这也是因为for-each本身实现用的也是迭代器。

    

总结:

  • Iterable是接口,用于返回迭代器,实现该接口就算是可迭代对象,可以直接使用for-each循环访问数据。
  • Iterator就是迭代器,用于遍历集合中的数据,并无需关心集合的内部实现。
  • for-each的实现,用的就是迭代器。

那么问题来了,如果返回迭代器后,又对数据进行了增删改,那不也会对迭代器的使用产生影响吗?Java标准库中又对这种情况进行怎样处理呢?

最后

以上就是无辜烧鹅为你收集整理的浅谈Java中的:迭代器的全部内容,希望文章能够帮你解决浅谈Java中的:迭代器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部