Iterator是一個迭代器接口,專門用來迭代各種Collection集合,包括Set集合和List集合。
Java要求各種集合都提供一個iteratot()方法,該方法返回一個Iterator用於遍歷集合中的元素。至於返回的Iterator是哪一種實現類我們並不關心,這就是典型的“迭代器模式”。
使用Iterator遍歷集合元素,很好的隱藏了集合的內部細節。
Iterator接口包含以下三個方法:
- boolean hasNext():如果被迭代的集合元素還沒有被遍歷,則返回true。
- Object next():返回集合里下一個元素
- void remove():移除集合里上一次next()返回的元素
例子:
public class IteratorTest { public static void main(String[] args) { Collection books = new HashSet(); books.add("計算機網絡"); books.add("數字信號處理"); books.add("java語言程序設計"); //生成迭代器 Iterator it = books.iterator(); int i=0; while(it.hasNext()){ //next()返回的數據是Object型,需要強制轉化 String info = (String)it.next(); //輸出遍歷的每一個元素 System.out.println("第"+i+"個元素:"+info); if(info.equals("數字信號處理")){ System.out.println(i); it.remove(); //把《數字信號處理》從集合books中移除 } i++; } //輸出移除后的結果 System.out.println(books); } }
輸出結果為:
第0個元素:java語言程序設計
第1個元素:數字信號處理
1
第2個元素:計算機網絡
[java語言程序設計, 計算機網絡]
除了通天Iterator接口遍歷集合的元素外,還可以使用以下方法遍歷。這種方法顯得更加簡潔。
public class IteratorTest { public static void main(String[] args) { Collection books = new HashSet(); books.add("計算機網絡"); books.add("數字信號處理"); books.add("java語言程序設計"); for(Object obj:books){ String info = (String)obj; System.out.println(info); if(info.equals("數字信號處理")){ //books.remove(info);不能通過迭代變量修改集合,否則引發異常 } } } }
輸出結果為:
java語言程序設計
數字信號處理
計算機網絡