天天看點

在JAVA中 疊代器Iterator的具體含義和用法!

<span style="font-size:14px;">list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }
 /*疊代器用于while循環*/
 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }</span>
           

他又幾個常用的方法:

     (1) 使用方法iterator()要求容器傳回一個Iterator。第一次調用Iterator的next()方法時,它傳回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。

  (2) 使用next()獲得序列中的下一個元素。

  (3) 使用hasNext()檢查序列中是否還有元素。

  (4) 使用remove()将疊代器新傳回的元素删除。

  Iterator是Java疊代器最簡單的實作,為List設計的ListIterator具有更多的功能,它可以從兩個方向周遊List,也可以從List中插入和删除元素。

下面是百度百科的一段内容,我把它複制過來給你參考參考:

Iterator模式有三個重要的作用:

1)它支援以不同的方式周遊一個聚合 複雜的聚合可用多種方式進行周遊,如二叉樹的周遊,可以采用前序、中序或後序周遊。疊代器模式使得改變周遊算法變得很容易: 僅需用一個不同的疊代器的執行個體代替原先的執行個體即可,你也可以自己定義疊代器的子類以支援新的周遊,或者可以在周遊中增加一些邏輯,如有條件的周遊等。

2)疊代器簡化了聚合的接口 有了疊代器的周遊接口,聚合本身就不再需要類似的周遊接口了,這樣就簡化了聚合的接口。

3)在同一個聚合上可以有多個周遊 每個疊代器保持它自己的周遊狀态,是以你可以同時進行多個周遊。

4)此外,Iterator模式可以為周遊不同的聚合結構(需擁有相同的基類)提供一個統一的接口,即支援多态疊代。

簡 單說來,疊代器模式也是Delegate原則的一個應用,它将對集合進行周遊的功能封裝成獨立的Iterator,不但簡化了集合的接口,也使得修改、增 加周遊方式變得簡單。從這一點講,該模式與Bridge模式、Strategy模式有一定的相似性,但Iterator模式所讨論的問題與集合密切相關, 造成在Iterator在實作上具有一定的特殊性,具體将在示例部分進行讨論。

正如前面所說,與集合密切相關,限制了 Iterator模式的廣泛使用。在一般的底層集合支援類中,我們往往不願“避輕就重”将集合設計成集合 + Iterator 的形式,而是将周遊的功能直接交由集合完成,以免犯了“過度設計”的诟病,但是,如果我們的集合類确實需要支援多種周遊方式(僅此一點仍不一定需要考慮 Iterator模式,直接交由集合完成往往更友善),或者,為了與系統提供或使用的其它機制,如STL算法,保持一緻時,Iterator模式才值得考 慮。

繼續閱讀