逆向迭代器

上一篇《持有对象——Java容器》提到容器类中的一个强大的功能:迭代器。但是除了List类的ListIterator之外,迭代器都只能从头到尾遍历容器,但是由于迭代器其实是实现了Collection的Iterable接口。因此,在某些情况下,当需要使用到非顺序的迭代器是,可以通过实现该接口编写符合需求的迭代器。Itrable对象都可以用于foreach语句。下面是一个反向迭代器的示例代码:

 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 }

 

posted on 2015-03-18 15:30  甲马  阅读(384)  评论(0编辑  收藏  举报

导航