Chcę mieć odwrócony widok listy na liście (w podobny sposób, jak List#sublist
zapewnia widok listy sublist na liście). Czy jest jakaś funkcja zapewniająca tę funkcjonalność?
Nie chcę tworzyć żadnej kopii listy ani modyfikować listy.
Wystarczyłoby, gdybym w tym przypadku znalazł przynajmniej jedną iterator do tyłu.
Wiem też, jak to zrobić. Pytam tylko, czy Java już zapewnia coś takiego.
Wdrożenie demonstracyjne:
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(); }
};
}
};
}
Właśnie dowiedziałem się, że niektóre List
wdrożenia mają descendingIterator()
to, czego potrzebuję. Chociaż nie ma takiej ogólnej implementacji List
. Co jest dość dziwne, ponieważ implementacja, którą widziałem, LinkedList
jest wystarczająco ogólna, aby z nią pracować List
.
Collections.reverse(list)