下面是一個ListItr的使用實例。
1 LinkedList《String》 list = new LinkedList《String》();
2 list.add(“First”);
3 list.add(“Second”);
4 list.add(“Thrid”);
5 System.out.println(list);
6 ListIterator《String》 itr = list.listIterator();
7 while (itr.hasNext()) {
8 System.out.println(itr.next());
9 }
10 try {
11 System.out.println(itr.next());// throw Exception
12 } catch (Exception e) {
13 // TODO: handle exception
14 }
15 itr = list.listIterator();
16 System.out.println(list);
17 System.out.println(itr.next());
18 itr.add(“new node1”);
19 System.out.println(list);
20 itr.add(“new node2”);
21 System.out.println(list);
22 System.out.println(itr.next());
23 itr.set(“modify node”);
24 System.out.println(list);
25 itr.remove();
26 System.out.println(list);
1 結果:
2 [First, Second, Thrid]
3 First
4 Second
5 Thrid
6 [First, Second, Thrid]
7 First
8 [First, new node1, Second, Thrid]
9 [First, new node1, new node2, Second, Thrid]
10 Second
11 [First, new node1, new node2, modify node, Thrid]
12 [First, new node1, new node2, Thrid]
LinkedList還有一個提供Iterator的方法:descendingIterator()。該方法返回一個DescendingIterator對象。DescendingIterator是LinkedList的一個內部類。
1 public Iterator《E》 descendingIterator() {
2 return new DescendingIterator();
3 }
下面分析詳細分析DescendingIterator類。
1 private class DescendingIterator implements Iterator {
2 // 獲取ListItr對象
3 final ListItr itr = new ListItr(size());
4 // hasNext其實是調用了itr的hasPrevious方法
5 public boolean hasNext() {
6 return itr.hasPrevious();
7 }
8 // next()其實是調用了itr的previous方法
9 public E next() {
10 return itr.previous();
11 }
12 public void remove() {
13 itr.remove();
14 }
15 }
從類名和上面的代碼可以看出這是一個反向的Iterator,代碼很簡單,都是調用的ListItr類中的方法。
評論
查看更多