Ich möchte eine umgekehrte List#sublist
Listenansicht für eine Liste haben (ähnlich wie bei einer Unterlistenansicht für eine Liste). Gibt es eine Funktion, die diese Funktionalität bietet?
Ich möchte keine Kopie der Liste erstellen oder die Liste ändern.
In diesem Fall wäre es jedoch ausreichend, wenn ich mindestens einen Reverse-Iterator auf eine Liste setzen könnte.
Außerdem weiß ich, wie ich das selbst umsetzen kann. Ich frage nur, ob Java so etwas bereits 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 genau das haben, descendingIterator()
was ich brauche. Obwohl es keine allgemeine solche Implementierung für gibt List
. Was irgendwie seltsam ist, weil die Implementierung, die ich gesehen habe, LinkedList
allgemein genug ist, um mit jeder zu arbeiten List
.
Collections.reverse(list)