我想在列表上有一个反向列表视图(类似于 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
一起使用。
原文由 Albert 发布,翻译遵循 CC BY-SA 4.0 许可协议
Guava 提供了这个: Lists.reverse(List)
与
Collections.reverse
不同,这纯粹是一个 视图……它不会改变原始列表中元素的顺序。此外,对于可修改的原始列表,对原始列表和视图的更改会反映在另一个中。