每种容器自身底层实现的原理不同,例如ArrayList底层采用数组实现,LinkedList底层采用链表实现。因此Collection很难给出一个统一 的用于遍历各种容器的方法。这项工作只有交给每个容器自己去做。
具体的做法就是每个容器都必须实现iterator方法。该方法返回一个实现了Iterator接口的对象。通过该对象来对容器进行遍历
Iterator接口定义了以下的方法,故iterator方法返回的对象能够调用以下的方法来实现对数组的遍历。
以下是一个利用Iterator进行遍历的例子
package com.fw.proxy;
import java.util.*;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for(int i=0;i<10;++i) {
list.add("str:"+i);
}
//拿到实现了Iterator接口的对象。利用该对象对容器进行遍历
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {//判断容器里是否还有值
System.out.println(iterator.next());
}
}
}
另外,特别需要注意的是
因为Iterator在对容器进行遍历的时候,会对里面的元素进行锁定。只能自己操作。不允许容器自身进行类似于删除的操作。因此删除操作也只能由Iterator进行
同时List类不仅可以利用Iterator访问同时还可以利用下标进行访问