2 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
簡(jiǎn)單地說(shuō):這是java里面的一個(gè)迭代器,主要用來(lái)取集合容器里面的值
舉個(gè)小例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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循環(huán)*/ Iterator iter = l.iterator(); while(iter.hasNext()){ String str = (String) iter.next(); System.out.println(str); } |
他又幾個(gè)常用的方法:
(1) 使用方法iterator()要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí),它返回序列的第一個(gè)元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
(2) 使用next()獲得序列中的下一個(gè)元素。
(3) 使用hasNext()檢查序列中是否還有元素。
(4) 使用remove()將迭代器新返回的元素刪除。
Iterator是Java迭代器最簡(jiǎn)單的實(shí)現(xiàn),為L(zhǎng)ist設(shè)計(jì)的ListIterator具有更多的功能,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素。
下面是百度百科的一段內(nèi)容,我把它復(fù)制過(guò)來(lái)給你參考參考:
Iterator模式有三個(gè)重要的作用:
1)它支持以不同的方式遍歷一個(gè)聚合 復(fù)雜的聚合可用多種方式進(jìn)行遍歷,如二叉樹(shù)的遍歷,可以采用前序、中序或后序遍歷。迭代器模式使得改變遍歷算法變得很容易: 僅需用一個(gè)不同的迭代器的實(shí)例代替原先的實(shí)例即可,你也可以自己定義迭代器的子類以支持新的遍歷,或者可以在遍歷中增加一些邏輯,如有條件的遍歷等。
2)迭代器簡(jiǎn)化了聚合的接口 有了迭代器的遍歷接口,聚合本身就不再需要類似的遍歷接口了,這樣就簡(jiǎn)化了聚合的接口。
3)在同一個(gè)聚合上可以有多個(gè)遍歷 每個(gè)迭代器保持它自己的遍歷狀態(tài),因此你可以同時(shí)進(jìn)行多個(gè)遍歷。
4)此外,Iterator模式可以為遍歷不同的聚合結(jié)構(gòu)(需擁有相同的基類)提供一個(gè)統(tǒng)一的接口,即支持多態(tài)迭代。
簡(jiǎn) 單說(shuō)來(lái),迭代器模式也是Delegate原則的一個(gè)應(yīng)用,它將對(duì)集合進(jìn)行遍歷的功能封裝成獨(dú)立的Iterator,不但簡(jiǎn)化了集合的接口,也使得修改、增 加遍歷方式變得簡(jiǎn)單。從這一點(diǎn)講,該模式與Bridge模式、Strategy模式有一定的相似性,但I(xiàn)terator模式所討論的問(wèn)題與集合密切相關(guān), 造成在Iterator在實(shí)現(xiàn)上具有一定的特殊性,具體將在示例部分進(jìn)行討論。
正如前面所說(shuō),與集合密切相關(guān),限制了 Iterator模式的廣泛使用。在一般的底層集合支持類中,我們往往不愿“避輕就重”將集合設(shè)計(jì)成集合 + Iterator 的形式,而是將遍歷的功能直接交由集合完成,以免犯了“過(guò)度設(shè)計(jì)”的詬病,但是,如果我們的集合類確實(shí)需要支持多種遍歷方式(僅此一點(diǎn)仍不一定需要考慮 Iterator模式,直接交由集合完成往往更方便),或者,為了與系統(tǒng)提供或使用的其它機(jī)制,如STL算法,保持一致時(shí),Iterator模式才值得考 慮。
- 2 回答
- 0 關(guān)注
- 801 瀏覽
添加回答
舉報(bào)