黑马程序员技术交流社区
标题:
迭代器的问题
[打印本页]
作者:
邢晏玮
时间:
2012-11-7 21:44
标题:
迭代器的问题
本帖最后由 邢晏玮 于 2012-11-9 15:54 编辑
在看毕老师的视频的时候遇到了一个问题理解不了为什么是这样的
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
Iterator it = al.iterator();
复制代码
这个地方为什么是Iterator it = al.iterator(); 为什么是一个对象.一个方法就成了Iterator接口的子类对象啊
作者:
葬天
时间:
2012-11-7 21:54
由于每个集合的底层数据结构不同,
所以 迭代器实现也不同,因此定义成内部类的形式,
然后通过该类的一个方法,iterator()返回内部类的实例
作者:
杨雪松
时间:
2012-11-7 22:01
al.iterator();的意思是用集合的对象al来调用iterator()方法,
而iterator()方法返回来的就是一个Iterator接口的子类对象 it
在jdk的api中是这么写的:
iterator
Iterator
<T> iterator()返回一个在一组 T 类型的元素上进行迭代的迭代器。
返回:
一个迭代器。
从这里也可以看出它返回的是Iterator接口的子类对象
作者:
王振
时间:
2012-11-7 22:07
首先要做到2点:
1、理解函数的定义,知道返回值类型是干什么用的。
2、能够查API。
如果上面2点楼主都清楚的话,那就好讲了。
API中是这样定义的: public Iterator<E> iterator()
这一点应该理解吧
继续往下讲,这里返回的肯定是一个Iterator接口的实现类对象,至于怎么实现这个过程的,需要看源代码。
下面是源码:
public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
//code....
}
复制代码
你可以看到,里面其实是返回了一个Itr的实例对象,而Itr是一个实现了Iterator接口的内部类。
这样可以理解了吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2