Ich möchte eine umgekehrte Listenansicht auf einer Liste haben (ähnlich wie List#sublist
bietet eine Unterliste Ansicht auf einer Liste). Gibt es eine Funktion, die diese Funktionalität bietet?Wie man eine Liste in Java umkehrt?
Ich möchte keine Kopie der Liste machen oder die Liste ändern.
Es wäre genug, wenn ich in diesem Fall zumindest einen umgekehrten Iterator in einer Liste bekommen könnte.
Auch ich weiß, wie ich das selbst implementieren. Ich frage nur, ob Java schon so etwas bietet.
Demo Implementierung:
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(); }
};
}
};
}
Ich habe gerade herausgefunden, dass einige List
Implementierungen descendingIterator()
haben das ist, was ich brauche. Obwohl es keine allgemeine Implementierung für List
gibt. Das ist irgendwie komisch, weil die Implementierung, die ich in LinkedList
gesehen habe, allgemein genug ist, mit irgendeiner List
zu arbeiten.
Können Sie die Liste in umgekehrter Reihenfolge erstellen? –
Ja, es tut - java.uitl.List.listIterator (int) http://download.oracle.com/javase/6/docs/api/java/util/List.html#listIterator%28int%29 – TofuBeer