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