/** * 书本:《Thinking In Java》 * 功能:我们希望在默认的向前迭代器的基础上,添加产生反向迭代器的能力。 * 文件:AdapterMethodIdiom.java * 时间:2015年4月8日19:59:01 * 作者:cutter_point */ package Lesson11holdingyourobjects; import java.util.*; class ReversibleArrayList<T> extends ArrayList<T> { public ReversibleArrayList(Collection<T> c) { super(c); } public Iterable<T> reversed() { return new Iterable<T>() //第一个匿名的内部类 { @Override public Iterator<T> iterator() //Iterable里面的必须实现的方法 { return new Iterator<T>() //返回值是第二个匿名内部类 { int current = size() - 1; //这个size是ArrayList里面的函数,继承过来的 @Override public boolean hasNext() { return current > -1; } @Override public T next() { return get(current--); //这个是向前推进的 } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }; } } public class AdapterMethodIdiom { public static void main(String [] args) { ReversibleArrayList<String> ral = new ReversibleArrayList<String>(Arrays.asList("To be or not to be".split(" "))); for(String s : ral) System.out.print(s + " "); System.out.println(); //向前遍历 for(String s : ral.reversed()) System.out.print(s + " "); } }
预览:
To be or not to be
be to not or be To
时间: 2024-11-03 05:40:57