Je veux avoir une vue de liste inversée sur une liste (d'une manière similaire à celle qui List#sublist
fournit une vue de sous-liste sur une liste). Y a-t-il une fonction qui fournit cette fonctionnalité?
Je ne veux pas faire de copie de la liste ni modifier la liste.
Ce serait suffisant si je pouvais obtenir au moins un itérateur inversé sur une liste dans ce cas.
De plus, je sais comment l'implémenter moi-même. Je demande simplement si Java fournit déjà quelque chose comme ça.
Mise en œuvre de la démonstration:
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(); }
};
}
};
}
Je viens de découvrir que certaines List
implémentations ont descendingIterator()
ce dont j'ai besoin. Bien qu'il n'y ait pas une telle mise en œuvre générale pour List
. Ce qui est LinkedList
assez étrange car l'implémentation que j'ai vue dans est assez générale pour fonctionner avec n'importe laquelle List
.
Collections.reverse(list)