每種容器自身底層實現的原理不同,例如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訪問同時還可以利用下標進行訪問