上一篇提到容器类中的一个强大的功能:迭代器。但是除了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 args10 */11 public static void main(String[] args) {12 // TODO Auto-generated method stub13 ReverseArrayListreverseArrayList = new ReverseArrayList (); 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 extends ArrayList {30 private static final long serialVersionUID = 1L;31 public Iterable reversIt(){32 return new Iterable (){33 public Iterator iterator() {34 return new Iterator () {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 }