一、一个简单使用 Iterator 迭代器的代码
List list= new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//(1)通过循环遍历List
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
//(2)通过迭代器遍历List
for(Iterator it= list.iterator(); it.hasNext(); ){
String str = (String) it.next();
System.out.println(str);
}
1、所有实现了Collection接口的容器类,都有一个iterator方法,用以返回一个实现了Iterator接口的对象。
2、Iterator对象称作 迭代器 ,用以方便的实现对容器内部元素的遍历操作。
3、Iterator接口定义了如下方法:
boolean hasNext(); 判断是否有元素没有被遍历
Object next(); 返回游标当前位置的元素,并将游标移动到下一个位置
void remove(); 删除游标左面的元素(刚刚遍历完的那个元素),在执行完next之后该操作只能执行一次
(1)简单实现迭代器的三大函数
public class IteratorImp {
private String[] elem={"a","b","c","d"};
private int size = elem.length;
public int size(){
return size;
}
//计数器:指针、游标, 指向当前访问过的元素
private int coursor = -1;
//判断是否存在下一个
public boolean hasNext(){
return (coursor+1)<size;
}
//获取下一个
public Object next(){
coursor++;
return elem[coursor];
}
//删除下一个
public void remove(){
//移动数组的元素
System.arraycopy(elem, coursor+1, elem, coursor, size-coursor-1);
this.size--;
//退回上一个访问的元素,即可实现多次删除
this.coursor--;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
IteratorImp it =new IteratorImp();
while(it.hasNext()){
System.out.println((String) it.next());
}
System.out.println("总共有"+it.size()+"个元素!");
}
}
(2)改进版1:将这三个方法封装在一个 非静态内部类中