Попытка реализовать некоторые функции ReduRight.Для производительности было бы неплохо перебирать справа налево, не переворачивая все сначала, а потом идти слева направо.Обычно мы делаем:
Iteratable iterable ...;
Iterator iterator = iterable.iterator();
iterator.next();
, но я ищу что-то вроде:
Iteratable iterable ...;
Iterator iterator = iterable.reverseIterator();
iterator.next();
Я вижу это решение: Итерация по списку в обратном порядке в Java
Текущий принятый ответ говорит, что это работает:
ArrayList<...> a = new ArrayList<...>();
// Add elements to list.
// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());
// Iterate in reverse.
while(li.hasPrevious()) {
System.out.println(li.previous());
}
Кто-нибудь знает, как реализовать обратную итерацию, имея только Iterable
в руке?У меня нет ArrayList
или Списка в руке, у меня есть Iterable
в руке.Я полагаю, я могу преобразовать Iterable в ArrayList, перевернуть список, затем получить итератор, но это было бы неинтересно:)