迭代器(lterator)
在第六章我們開發(fā)的LinkedList類中,你可能已經(jīng)想到了從表中取決對象的方法有點麻煩。必須用方法getFirst()檢索第一個元素,用另一個方法getNext()依次檢索其他元素,這使得檢索表中的第一個元素是一個"特殊情況".因此處理元素時必須考慮這種情況。而且比它需要的更復雜一些。
在一個幾何中連續(xù)地處理元素的更好的達到是使用迭代器(iteratir).
值得注意的一點是Java也提供了枚舉器。一個枚舉器提供的能力與迭代器基本相同,但Java文檔中建議你在幾何中應該用迭代器代替枚舉器。
通常一個迭代器是一個對象,你可以用它在集合中一個連接一個地檢索所有對象。有的人在一疊紙牌中一張接一張地處理紙牌,就像是一個用于紙牌的迭代器--當然不包括洗牌。
在 Java中,一個迭代器是一個由一個集合類實現(xiàn)的接口。任何幾何對象可以創(chuàng)建一個Iterator類型的對象,這個對象再按某種次序封裝原始幾何中所有對象的引用,而且能用Iterator接口方法訪問。換句話,一個迭代器提供了一種簡便方法能在一個集合中檢索所有對象。在Java中使用迭代器的基本方法如下圖所示。
?
由于對一個對象調(diào)用next()方法會從第一個開始連續(xù)地返回集合中的對象,你可以用這個循環(huán)很容易的處理集合中所有的元素;
Myclass item??????????????????? //storo an object from the collection
while(iter.hasNext())????????? //check that there's another
{
item=(Myclass)iter.next();??? //Retrieve next object
//Do something with item.....
}
這里假設itcr是Iterator類型并且存儲一個對象的引用,該對象是從我們使用的任何集合類中獲得的,正如我們很快會看到的,集合的對象有一個方法 iterator()集合的當前內(nèi)容返回個迭代器。只要hasNext()方法返回true循環(huán)會繼續(xù)。由于next()方法返回Object類型的對象,我們需要將它強制轉(zhuǎn)換成實際類型。每當你需要瀏覽集合中的對象時,你需要獲得另一個迭代器,因為一個迭代器是"一次性使明"的對象
只有集或表的Java集合類一肖接使迭代器有效、盡管如此,正如我們看到的,個映像提供使一些鍵或?qū)ο蠹存I/對象對被看作集的方法因此川一以獲得迭代器去處理作為集的映像中的對象。
我們在這里石一到的迭代器是單行線-我們可以一次一個地訪問一個集介中對象。情況就是這樣。對于許多用途而言這樣很好而且比手丁編寫的循環(huán)安全得多,因為不可能發(fā)生邊界條件錯誤。盡管如此,如果這還不夠,有另一種更靈活的迭代器。
表迭代器
ListIterator接口聲明的方法使你可以用于向后或向前遍歷一個對象集合、你也不必選擇一個特殊的方向。你可以由向前改成向后,反之亦然,因此一個對象可以被檢索多次。
ListIterator接日擴展了Iterator接口,因此你以前見到的迭代器方法仍然可以使用。在ListIterator接口中定義的你用于遍歷對象的表的方法是:
你可以通過切換地調(diào)用next()和previous()來向后或向前瀏覽表。調(diào)用完next()方法后。立即調(diào)用previous()方法將返回同一個元素-反之亦然。
通過一個Listlterator你可以在集合中添加和并換對象,也可以從集合巾刪除對象ListIterator聲明了下邊的方法:
現(xiàn)在我們了解了迭代器,為了使用集合類,我們必須知道一些有關(guān)集合類白身的知識。
?
原文鏈接:http://edu.cnzz.cn/8949321b.html
轉(zhuǎn)載于:https://www.cnblogs.com/zhaofei/p/3408990.html
總結(jié)
以上是生活随笔為你收集整理的迭代器(lterator)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 政府无线移动办公解决方案
- 下一篇: UVA 1363