我们可以通过迭代器来遍历一个序列,不论这个序列中存放的是数字,字符串或者是对象。
如下所示,Hero是我创建的一个类
public class Hero {
String name;
public Hero(String name) {
this.name = name;
}
}
我们可以创建一个ArrayList,里边存放实例化出来的Hero对象
List<Hero> heros = new ArrayList<Hero>();
for(int i=1;i<4;i++) {
heros.add(new Hero("英雄"+i));
}
首先我们用for循环来遍历一下这个list
for(int i=1;i<4;i++) {
System.out.println(heros.get(i-1));
}
得到的结果
接下来我们用迭代器来遍历这个ArrayList
- while循环
Iterator<Hero> it1 = heros.iterator();
while(it1.hasNext()) {
System.out.println(it1.next());
}
- for循环
for(Iterator<Hero> it2 = heros.iterator();it2.hasNext();) {
System.out.println(it2.next());
}
从上面三组输出结果可以看到迭代器中Hero对象的地址跟ArrayList中Hero对象的地址并不相同,因为迭代器中存放的并不是原来的对象,而是指向该对象的指针。
针对迭代器共有三种方法,
- hasNext() :看是否还有下一个元素。有,返回true,反之返回false。
- next():返回下一个对象
- remove():从原序列中删除掉迭代器返回的最后一个元素
我们通常用hasNext()来作为循环条件,用next()来获取元素