一、为什么要使用迭代器?
请设想一样,一段代码,之前是用于对List操作的,而现在需要这段代码对Set进行操作,该怎么办呢?大家可能想到再编写对Set进行操作的代码就可以了,然后此时如果我们使用迭代器将会显得代码更加优雅,因为迭代器可以针对不同的集合类对象进行操作,而根本不管集合类到底是什么。
二、什么是迭代器?
迭代器是一个对象,它的功能是遍历并选择集合中的对象,而并不需要知道该集合到底是什么类型的。
三、迭代器中包含的方法:
(1)iterator():用于返回容器的一个Iterator。
(2)hasNext():用于判断集合中是否还有元素。
(3)next():用来获取集合的下一个元素。
(4)remove():用来移除集合中的元素。注意:remove()方法必须用在next()方法之后。
四、代码例子:
package com.lt.iterator;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* 演示类:演示迭代器的使用
* @author Administrator
*
*/
public class IteratorDemo {
public static void display(Iterator<Pet> iterator){
while(iterator.hasNext()){
Pet pet=iterator.next();
System.out.println(pet);
}
}
public static void main(String[] args) {
List<Pet> list=new ArrayList<Pet>();
list.add(new Dog());
list.add(new Cat());
Set<Pet> set=new HashSet<Pet>();
set.add(new Dog());
set.add(new Cat());
display(list.iterator());
display(set.iterator());
}
}
class Pet{
@Override
public String toString() {
return "Pet";
}
}
class Dog extends Pet{
@Override
public String toString() {
return "Dog";
}
}
class Cat extends Pet{
@Override
public String toString() {
return "Cat";
}
}
五、总结
从上面的代码我们可以看出display()方法仅仅出入一个迭代器,而并不需要知道是什么产生的迭代器。这就是使用迭代器的好处。