黑马程序员技术交流社区
标题:
关于迭代器Iterator
[打印本页]
作者:
杨朝辉
时间:
2012-3-24 21:16
标题:
关于迭代器Iterator
ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
Iterator itr=al.iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
}
复制代码
Iterator本身是一个接口,里面的方法也是抽象方法,怎么就能遍历ArrayList?
作者:
朱辉
时间:
2012-3-24 21:40
因为ArrayList实现Iterable接口,Iterable接口里面有iterator()方法,返回值是一个Iterator对象,就是这句代码Iterator itr=al.iterator();
有了对象就可以调用Iterator接口的hasNext方法这个方法是判断集合里面还有没有元素可以取出,有的话可以调用next方法把元素取出
作者:
liumeng
时间:
2012-3-24 21:43
private class Itr implements Iterator<E> {
作者:
刘旭
时间:
2012-3-24 21:50
本帖最后由 刘旭 于 2012-3-24 22:21 编辑
在抽象类AbstractList里面定义的内部类 private class Itr implements Iterator<E>里面定义了取得数据的next hasNext 等方法,而此抽象类的Iterator方法代码如下:
public Iterator<E> iterator() {
return new Itr();
}即返回了一个迭代器。
此抽象类实现了Iterable<E>, Collection<E>, List<E>接口,ArrayList又继承了AbstractList,所以,它具有iterator方法,而iterator方法又有取出List集合中元素的方法。
这是特定与List接口的迭代器。在HashSet TreeSet中也有相应的特定于自己的迭代器。
具体情况请查看源代码。
作者:
庞子华
时间:
2012-3-24 21:57
迭代器:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
迭代器角色,仅仅定义了遍历接口,具体迭代器角色是定义在容器角色中的内部类
迭代器的实现://迭代器角色,仅仅定义了遍历接口
public interface Iterator {
boolean hasNext();
Object next();
void remove();
}
public abstract class AbstractList extends AbstractCollection implements List
{
……
//这个便是负责创建具体迭代器角色的工厂方法
public Iterator iterator()
{
return new Itr();
}
}
作者:
袁野
时间:
2012-3-24 22:37
已经实现了 迭代的方法 ,API 你瞧瞧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2