我們在使用list,set的時候,為了實現對其資料的遍歷,我們經常使用到了iterator(跌代器)。使用跌代器,你不需要干涉其遍歷的過程,只需要每次取出乙個你想要的資料進行處理就可以了。
但是在使用的時候也是有不同的。list和set都有iterator()來取得其迭代器。對list來說,你也可以通過listiterator()取得其迭代器,兩種迭代器在有些時候是不能通用的,iterator和listiterator主要區別在以下方面:
1.listiterator只能用於list,iterator是通用的
2.iterator容易引起併發修改異常問題,而listiterator可以避免執行緒安全問題的發生,因為其有內建的add()等修改集合的方法。例子如下
public static void main(string[ ] args)
}這段程式在編譯時將會報錯,原因是迭代器在讀取集合時,利用集合物件的add()方法對集合進行了修改,迭代器並不知道集合已經發生變化,而導致迭代發生異常。而使用迭代器物件的add()方法則可以避免這個問題,**如下:
public static void main(string[ ] args)
}3. listiterator和iterator都有hasnext()和next()方法,可以實現順序向後遍歷,但是listiterator有hasprevious()和previous()方法,可以實現逆向(順序向前)遍歷。iterator就不可以。
4. listiterator可以定位當前的索引位置,nextindex()和previousindex()可以實現。iterator沒有此功能。
5. 都可實現刪除物件,但是listiterator可以實現物件的修改,set()方法可以實現。iierator僅能遍歷,不能修改。
因為listiterator的這些功能,可以實現對linkedlist等list資料結構的操作。其實,陣列物件也可以用迭代器來實現。
org.apache.commons.collections.iterators.arrayiterator就可以實現此功能。一般情況下,我們使用iterator就可以了,如果你需要進行記錄的前後反覆檢索的話,你就可以使用listiterator來擴充套件你的功能,(有點象jdbc中的滾動結果集)
Iterator和listIterator的區別
我們在使用list,set的時候,為了實現對其資料的遍歷,我們經常使用到了iterator 迭代器 使用迭代器,你不需要干涉其遍歷的過程,只需要每次取出乙個你想要的資料進行處理就可以了。但是在使用的時候也是有不同的。list和set都有iterator 來取得其迭代器。對list來說,你也可以通過l...
Iterator和listIterator的區別
我們在使用list,set的時候,為了實現對其資料的遍歷,我們經常使用到了iterator 迭代器 使用迭代器,你不需要干涉其遍歷的過程,只需要每次取出乙個你想要的資料進行處理就可以了。但是在使用的時候也是有不同的。list和set都有iterator 來取得其迭代器。對list來說,你也可以通過l...
iterator和listiterator的異同
我們在使用list,set的時候,為了實現對其資料的遍歷,我們經常使用到了iterator 跌代器 使用跌代器,你不需要干涉其遍歷的過程,只需要每次取出乙個你想要的資料進行處理就可以了。但是在使用的時候也是有不同的。list和set都有iterator 來取得其迭代器。對list來說,你也可以通過l...