逆向迭代器

上一篇《持有對象——Java容器》提到容器類中的一個強大的功能:迭代器。可是除了List類的ListIterator以外,迭代器都只能從頭至尾遍歷容器,可是因爲迭代器實際上是實現了Collection的Iterable接口。所以,在某些狀況下,當須要使用到非順序的迭代器是,能夠經過實現該接口編寫符合需求的迭代器。Itrable對象均可以用於foreach語句。下面是一個反向迭代器的示例代碼:html

 1 package test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Iterator;
 5 
 6 public class ReverseIterator {
 7 
 8     /**
 9      * @param args
10      */
11     public static void main(String[] args) {
12         // TODO Auto-generated method stub
13         ReverseArrayList<String> reverseArrayList = new ReverseArrayList<String> (); 
14         reverseArrayList.add("str1");
15         reverseArrayList.add("str2");
16         reverseArrayList.add("str3");
17         reverseArrayList.add("str4");
18         for(String a : reverseArrayList){
19             System.out.println(a);
20         }
21         for(String b : reverseArrayList.reversIt()){
22             System.out.println(b);
23         }
24         
25     }
26 
27 }
28 
29 class ReverseArrayList<T> extends ArrayList<T> {
30     private static final long serialVersionUID = 1L;
31     public Iterable<T> reversIt(){
32         return new Iterable<T>(){
33             public Iterator<T> iterator() {
34                 return new Iterator<T>() {
35                     int pointer = size() - 1;
36                     public boolean hasNext() {
37                         return pointer>-1;
38                     }
39                     public T next() {
40                         return get(pointer--);
41                     }
42                     public void remove() {
43                     }};
44             }};
45     }
46 }
相關文章
相關標籤/搜索