迭代器是遍历Collection的工具,无论什么类型的Collection都可以用iterator来遍历。
我先举个例子:
package holdings;import java.util.ArrayList;import java.util.ListIterator;/** * 测试 ListIterator * * @author kfh * */public class TestListIterator { public static void main(String[] args) { ArrayListl = new ArrayList (); 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 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: a至于为什么是这样的?请往下看:
iterator的工作示意图:
☆iterator是这样工作的,首先声明的是iterator的cursor指向的是元素之间的间隔位置(如上图所示 Iterator1和Iterator的位置)
当调用iterator.next()时,官方文档是这样写的: Returns the next element in the list and advances the cursor position. 意思是,返回当前指针的下一个元素,并且推进指针到下一个位置。举个例子:
list.iterator() // cursor处在图中Iterator1的位置 iterator.next() // 返回list的元素1也就是图中的List1, 然后cursor推进一个位置到Iterator2的位置,如此往复进行遍历 现在大家明白了刚刚的例子为什么是a,b,b,a了。