1. 程式人生 > >JAVA高階基礎(3)---Iterator

JAVA高階基礎(3)---Iterator

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());
		}
	}
}

兩種迭代寫法的區別

  1. 迭代器的生命週期不同;
  2. for迴圈更節省空間,有利於jvm進行垃圾回收,空間釋放
  3. 從效能和資源的利用上來說,for迴圈更好。  

    在實際使用中,對於集合的迭代更加常用的是while

 

 

Enumeration(列舉)介面的作用和Iterator類似,只提供了遍歷Vector和HashTable型別集合元素的功能,不支援元素的移除操作。

區別

  1. Enumeration 是已經廢棄的介面。支援的迭代的集合是有限的。
  2. Enumeration速度比Iterator的更快,同時佔用更少的記憶體。
  3. Iterator遠遠比Enumeration安全,因為其他執行緒不能夠修改正在被iterator遍歷的集合裡面的物件。
  4. Iterator允許呼叫者刪除底層集合裡面的元素,這對Enumeration來說是不可能的。