Desejo ter uma exibição de lista invertida em uma lista (de maneira semelhante ao que List#sublist
fornece uma exibição de sub-lista em uma lista). Existe alguma função que fornece essa funcionalidade?
Não quero fazer nenhum tipo de cópia da lista nem modificá-la.
Seria o suficiente se eu pudesse obter pelo menos um iterador reverso em uma lista nesse caso.
Além disso, eu sei como implementar isso sozinho. Só estou perguntando se o Java já fornece algo assim.
Implementação de demonstração:
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(); }
};
}
};
}
Acabei de descobrir que algumas List
implementações têm o descendingIterator()
que eu preciso. Embora não exista essa implementação geral para List
. O que é meio estranho, porque a implementação que eu vi LinkedList
é geral o suficiente para funcionar com qualquer List
.
Collections.reverse(list)