JAVA高階基礎(3)---Iterator
阿新 • • 發佈:2018-11-26
Iterator
Iterator迭代器
它是Java集合的頂層介面(不包括map系列的集合,Map介面是map系列集合的頂層介面)
注:更多詳細方法請自行在 API 上查詢
Iterator 介面是專門用來對集合進行迭代的一個迭代器(遍歷)。對集合的遍歷,如果使用的是同一個迭代器,並且迭代同一個集合,那麼只能迭代一次。
package org.lanqiao.collection.demo; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; public class IteratorDemo { public static void main(String[] args) { Collection c = new ArrayList(); c.add(1);//這裡的1 是integer型別 實現了自動裝箱 c.add("aa"); c.add("bb"); //獲取集合的迭代器 Iterator iter =c.iterator(); while(iter.hasNext()) {//判斷當前集合時候有下一個元素 Object obj = iter.next();//獲取集合中的下一個元素 System.out.println(obj); } System.out.println("------------------"); Iterator iter2 = c.iterator(); while(iter2.hasNext()) {//判斷當前集合時候有下一個元素 Object obj = iter2.next();//獲取集合中的下一個元素 System.out.println(obj); } System.out.println("---使用for迴圈進行集合的迭代---------------"); for(Iterator iter3 = c.iterator();iter3.hasNext();) { Object o = iter3.next(); System.out.println(o); } System.out.println("---使用for迴圈進行集合的迭代---------------"); Iterator iter4 = c.iterator(); for(;iter4.hasNext();) { Object ob = iter4.next(); System.out.println(ob); } System.out.println("------------------"); Vector v = new Vector(); v.add("aaa"); v.add("bbb"); v.add("ccc"); Enumeration en = v.elements(); while(en.hasMoreElements()) { System.out.println(en.nextElement()); } } }
兩種迭代寫法的區別
- 迭代器的生命週期不同;
- for迴圈更節省空間,有利於jvm進行垃圾回收,空間釋放
- 從效能和資源的利用上來說,for迴圈更好。
在實際使用中,對於集合的迭代更加常用的是while
Enumeration(列舉)介面的作用和Iterator類似,只提供了遍歷Vector和HashTable型別集合元素的功能,不支援元素的移除操作。
區別
- Enumeration 是已經廢棄的介面。支援的迭代的集合是有限的。
- Enumeration速度比Iterator的更快,同時佔用更少的記憶體。
- Iterator遠遠比Enumeration安全,因為其他執行緒不能夠修改正在被iterator遍歷的集合裡面的物件。
- Iterator允許呼叫者刪除底層集合裡面的元素,這對Enumeration來說是不可能的。