Я хочу мати у списку переглянуте перегляд (аналогічним чином, ніж List#sublist
у списку подання переліку). Чи є якась функція, яка забезпечує цю функціональність?
Я не хочу робити жодної копії списку і не змінювати її.
Було б досить, якби я міг отримати хоча б зворотний ітератор у списку в цьому випадку.
Також я знаю, як це реалізувати самостійно. Я просто запитую, чи Java вже надає щось подібне.
Демонстраційна реалізація:
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(); }
};
}
};
}
Щойно я виявив, що в деяких List
реалізаціях descendingIterator()
є те, що мені потрібно. Хоча загальної такої реалізації не існує List
. Що дивно, тому що реалізація, яку я бачив LinkedList
, досить загальна для роботи з будь-якою List
.
Collections.reverse(list)