Quiero tener una vista de lista invertida en una lista (de manera similar que List#sublist
proporciona una vista de sublista en una lista). ¿Hay alguna función que proporcione esta funcionalidad?Cómo invertir una lista en Java?
No deseo hacer ningún tipo de copia de la lista ni modificar la lista.
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 por mí mismo. Solo estoy preguntando si Java ya ofrece algo como esto.
aplicació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(); }
};
}
};
}
que acaba de descubrir que algunas implementaciones tienen List
descendingIterator()
que es lo que necesito. Aunque no existe una implementación general de este tipo para List
. Lo cual es un poco extraño porque la implementación que he visto en LinkedList
es lo suficientemente general para funcionar con cualquier List
.
¿Puede construir la lista en el orden inverso para comenzar? –
Sí lo hace - java.uitl.List.listIterator (int) http://download.oracle.com/javase/6/docs/api/java/util/List.html#listIterator%28int%29 – TofuBeer