Quiero tener una vista de lista invertida en una lista (de manera similar a la que List#sublist
proporciona una vista de sublista en una lista). ¿Hay alguna función que proporcione esta funcionalidad?
No quiero hacer ningún tipo de copia de la lista ni modificarla.
Sin embargo, sería suficiente si pudiera obtener al menos un iterador inverso en una lista en este caso.
Además, sé cómo implementar esto yo mismo. Solo pregunto si Java ya proporciona algo como esto.
Implementación de demostración:
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(); }
};
}
};
}
Acabo de descubrir que algunas List
implementaciones tienen descendingIterator()
lo que necesito. Aunque no existe tal implementación general para List
. Lo cual es un poco extraño porque la implementación que he visto LinkedList
es lo suficientemente general como para funcionar con cualquiera List
.
Collections.reverse(list)