【发布时间】:2011-04-27 03:21:54
【问题描述】:
我想在列表上有一个反向列表视图(类似于List#sublist 在列表上提供子列表视图)。有没有提供这个功能的函数?
我不想复制列表,也不想修改列表。
在这种情况下,如果我能在列表中至少获得一个反向迭代器就足够了。
另外,我知道如何自己实现这一点。我只是问Java是否已经提供了类似的东西。
演示实现:
static <T> Iterable<T> iterableReverseList(final List<T> l) {
return new Iterable<T>() {
public Iterator<T> iterator() {
return new Iterator<T>() {
ListIterator<T> listIter = l.listIterator(l.size());
public boolean hasNext() { return listIter.hasPrevious(); }
public T next() { return listIter.previous(); }
public void remove() { listIter.remove(); }
};
}
};
}
我刚刚发现一些List 实现具有descendingIterator(),这正是我所需要的。尽管List 没有这样的通用实现。这有点奇怪,因为我在LinkedList 中看到的实现足够通用,可以与任何List 一起使用。
【问题讨论】:
-
你能以相反的顺序构建列表吗?
-
是的 - java.uitl.List.listIterator(int) download.oracle.com/javase/6/docs/api/java/util/…
-
如果您访问此链接以找到如何反转(修改)列表的答案,这就是答案:
Collections.reverse(list)
标签: java list collections iterator reverse