上一篇《持有对象——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 }