迭代器是遍歷Collection的工具,不管什麼類型的Collection均可以用iterator來遍歷。java
我先舉個例子:
工具
package holdings; import java.util.ArrayList; import java.util.ListIterator; /** * 測試 ListIterator * * @author kfh * */ public class TestListIterator { public static void main(String[] args) { ArrayList<String> l = new ArrayList<String>(); l.add("a"); l.add("b"); l.add("c"); l.add("d"); l.add("e"); l.add("f"); l.add("g"); l.add("h"); System.out.println(l); ListIterator<String> listIterator = l.listIterator(); String s1 = listIterator.next(); System.out.println("s1: " + s1); String s2 = listIterator.next(); System.out.println("s2: " + s2); String s1Previous = listIterator.previous(); System.out.println("s1Pre: " + s1Previous); String sPrevious2 = listIterator.previous(); System.out.println("sPre2: " + sPrevious2); } }
你們能夠隨便拉到一個項目裏跑一下試試,結果是這樣的:測試
[a, b, c, d, e, f, g, h]
s1: a
s2: b
s1Pre: b
sPre2: aspa
至於爲何是這樣的?請往下看:指針
iterator的工做示意圖:code
☆iterator是這樣工做的,首先聲明的是iterator的cursor指向的是元素之間的間隔位置(如上圖所示 Iterator1和Iterator的位置)
當調用iterator.next()時,官方文檔是這樣寫的:
Returns the next element in the list and advances the cursor position.
意思是,返回當前指針的下一個元素,而且推動指針到下一個位置。element
舉個例子:
list.iterator() // cursor處在圖中Iterator1的位置
iterator.next() // 返回list的元素1也就是圖中的List1, 而後cursor推動一個位置到Iterator2的位置,如此往復進行遍歷
如今你們明白了剛剛的例子爲何是a,b,b,a了。文檔