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