Java的Iterator迭代器

2021-09-18 04:28:53 字數 1142 閱讀 3087

當我們要顯示list收集的所有物件,也許你會這麼寫:

listlist=new arraylist<>();

list.add(1);

list.add(2);

list.add(3);

for (int i = 0; i < list.size(); i++)

這個方法適合所有操作list介面的物件,如arraylist、linkedlist等。如果要讓你寫個方法顯示set收集所有物件呢,你改怎樣寫?可能你會這樣寫:

setlist=new hashset()<>();

list.add(1);

list.add(2);

list.add(3);

for (integer integer : list)

這個方法適用於所有操作set介面的物件,如hashset、treeset等。但是現在讓你寫乙個可以顯示queue收集的所有物件,你該怎樣寫?還能用上面的兩種方法寫嗎?顯然這是不符合的。事實上,無論是list、set還是queue,這些介面都繼承了collection介面,而這個介面的父介面為iterable,所以都擁有了iterator的行為。

那麼,如何使用迭代器呢?通常情況下,你會希望遍歷乙個集合中的元素。例如,顯示集合中的每個元素。做到這一點最簡單的方法是採用乙個迭代器,它是乙個物件,實現了iterator 介面或listiterator介面。迭代器,使你能夠通過迴圈來得到或刪除集合的元素。listiterator繼承了iterator,以允許雙向遍歷列表和修改元素。

iterator()方法會返回iterable介面的操作物件,這個物件包括collection收集的所有物件,你可以使用iterator的hasnext()方法看看有無下乙個物件,若有的話,在使用next()取得下乙個物件。因此,無論list、set、queue還是任何collection,都可以使用以下的方法來顯示收集的物件:

setlist=new hashset<>();

list.add(1);

list.add(2);

list.add(3);

iteratoriterator=list.iterator();

while (iterator.hasnext())

Java迭代模式(Iterator模式)

上了這麼多年學,我發現乙個問題,好象老師都很喜歡點名,甚至點名都成了某些老師的嗜好,一日不點名,就飯吃不香,覺睡不好似的,我就覺得很奇怪,你的課要是講的好,同學又怎麼會不來聽課呢,殊不知 誤人子弟,乃是犯罪!啊。好了,那麼我們現在來看老師這個點名過程是如何實現吧 1 老規矩,我們先定義老師 teac...

Java迭代模式(Iterator模式)

上了這麼多年學,我發現乙個問題,好象老師都很喜歡點名,甚至點名都成了某些老師的嗜好,一日不點名,就飯吃不香,覺睡不好似的,我就覺得很奇怪,你的課要是講的好,同學又怎麼會不來聽課呢,殊不知 誤人子弟,乃是犯罪!啊。好了,那麼我們現在來看老師這個點名過程是如何實現吧 1 老規矩,我們先定義老師 teac...

java之Iterator迭代器

2016年8月28日 每週一篇部落格 第三週 本週沒有學到什麼,哀哉 listoptions new arraylist iteratoriterator options.iterator while iterator.hasnext iterator.next 指標 每調一次就會建立乙個物件,所以...