public class ReversibleArrayList<T> extends ArrayList<T> {
public ReversibleArrayList(Collection<T> c){
super(c);
}
//实现iterator反向遍历
public Iterable<T> reversed() {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
int current = size() - 1;
@Override
public boolean hasNext() {
return current>-1;
}
@Override
public T next() {
return get(current--);
}
public void remove(){
throw new UnsupportedOperationException();//不支持的操作异常
}
};
}
};
}
public static void main(String[] args) {
ReversibleArrayList<String> ral=new ReversibleArrayList<>(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+" ");
}
}
}