Iterator是怎樣遍歷Collection的?

迭代器是遍歷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了。文檔

相關文章
相關標籤/搜索