1. 程式人生 > >Java中Iterator迭代器設計原理

Java中Iterator迭代器設計原理

         我們知道迭代器(Iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素。那麼Iterator迭代器的設計原理是什麼呢?迭代器問什麼定義了一個藉口,而不是一個類呢?

        我們假設迭代器迭代資料的功能定義為了一個類,那麼,會有這樣的問題。不同的集合,由於資料結構不一樣,所以他們的儲存方式也是不一樣的。也就是說,迭代器獲取的時候,獲取的方式是變化的,也就是不固定的。所以把這種方式定義為具體的實現是不合理的。

         無論何種集合,他們肯定都有獲取的功能,而且不知道什麼時候就沒有資料了。所有他們也會有判斷功能。於是,就把判斷和獲取功能抽取出來,定義在介面中。這樣的話,將來無論是哪種集合在遍歷的時候,它們自己只要去實現迭代器介面即可。

         那具體怎麼實現的呢?集合迭代器是以內部類的方式實現的。簡單看一段程式碼。

public class IteratorDemo {
	public static void main(String[] args) {
		//建立物件
		Collection c = new ArrayList();
		
		//新增元素
		c.add("hello");
		c.add("world");
		c.add("helloworld");
		
		
		//遍歷集合物件,通過集合物件呼叫方法c.iterator()得到迭代器物件Iterator
		Iterator it = c.iterator();  //返回的是Iterator的子類物件,多型。
		
		while (it.hasNext()) {       //檢查序列中是否還有元素
			//System.out.println(it.next());
			String s =(String)it.next();//獲得序列中的下一個元素
			System.out.println(s);
		}
		
	}
}