【发布时间】:2016-02-23 02:04:23
【问题描述】:
我有这些代码:
class ReversibleArrayList<T> extends ArrayList<T> {
public ReversibleArrayList(Collection<T> c) {
super(c);
}
public Iterable<T> reversed() {
return new Iterable<T>() {
public Iterator<T> iterator() {
return new Iterator<T>() {
int current = size() - 1;
@Override
public boolean hasNext() {
return current >= 0;
}
@Override
public T next() {
return get(current--);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
}
此代码用于使ArrayList 可以在foreach 中反转。
有两个问题:
1、看不懂方法public Iterable<T> reversed(),
这个方法的返回值是Iterable,还有Iterator。
2、我觉得Interable只是一个接口,接口可以用来做返回值吗?
【问题讨论】:
-
为什么要扩展 ArrayList?!你不想让
ReversedList成为List的装饰器吗? -
@СӏаџԁеМаятіи 我只希望
ArrayList可以从头到尾移动。 -
大多数人会像这样创建一个交互器:
list.listIterator(list.size());然后使用previous():while(list.hasPrevious()) { ... list.previous() ... }