A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对于Iterable接口和Iterator接口,我现在的理解是:Iterable的字面意思是是否可迭代,实现该接口的类,可以得到迭代器。实现Iterator接口的类可以获得使用迭代器的方法,那为什么不把它变成一个接口呢?这样不就方便了么?

2 个回复

倒序浏览
哥们你话说的有点绕,把谁变成接口啊,Iterator和Iterable都是借口啊

Iterable是JDK1.5的新特性,而Iterator在JDK1.2时就出现了, Iterable有很多实现类,常用的 例如 List结合,Set集合等,当对集合中的对象进行迭代的时候就不用去实现Iterable借口了,因为集合已经在内部对其进行了实现,而在JDK1.5以前,必须先得实现Iterator接口,然后再去调用其中的方法,现在就不用了,sun公司已经为我们提供了很好的实现,并且调用Iterable中的iterator方法时返回的是Iterator实现类的的对象,所以就可以直接可以调用Iterator中的 hasNext(),next().以及remove()方法了。
这使得我们的开发得到了简化。
回复 使用道具 举报
楼上解释得很好
我在补充一些内容
迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。
遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
迭代和遍历都是要逐个访问元素。

可以实现Iterator接口,但还需重写接口中的方法,sun公司已经为我们提供了很好的实现,并且调用Iterable中的iterator方法时返回的是Iterator实现类的的对象,所以就可以直接可以调用Iterator中的 hasNext(),next().以及remove()方法了。
如:
ArrayList arrayList = new ArrayList();//初始化一个ArrayList集合

Iterator it = arrayList.iterator();//获取迭代器对象
   while(it.hasNext()) {//遍历集合中的对象
System.out.println(it.next().(arrayList中对象的方法或属性,这样就达到遍历的效果));
   }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马