黑马程序员技术交流社区
标题:
关于Iterable接口和Iterator接口的困惑
[打印本页]
作者:
永恒之翼网络
时间:
2012-4-29 09:32
标题:
关于Iterable接口和Iterator接口的困惑
对于Iterable接口和Iterator接口,我现在的理解是:Iterable的字面意思是是否可迭代,实现该接口的类,可以得到迭代器。实现Iterator接口的类可以获得使用迭代器的方法,那为什么不把它变成一个接口呢?这样不就方便了么?
作者:
根号5
时间:
2012-4-29 09:48
哥们你话说的有点绕,把谁变成接口啊,Iterator和Iterable都是借口啊
Iterable是JDK1.5的新特性,而Iterator在JDK1.2时就出现了, Iterable有很多实现类,常用的 例如 List结合,Set集合等,当对集合中的对象进行迭代的时候就不用去实现Iterable借口了,因为集合已经在内部对其进行了实现,而在JDK1.5以前,必须先得实现Iterator接口,然后再去调用其中的方法,现在就不用了,sun公司已经为我们提供了很好的实现,并且调用Iterable中的iterator方法时返回的是Iterator实现类的的对象,所以就可以直接可以调用Iterator中的 hasNext(),next().以及remove()方法了。
这使得我们的开发得到了简化。
作者:
张文建
时间:
2012-4-29 10:04
楼上解释得很好
我在补充一些内容
迭代(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中对象的方法或属性,这样就达到遍历的效果));
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2