Trying to implement some reduceRight functionality. For performance would be nice to iterate from right to left, without reversing everything first, and then going left to right. Normally we do:
Iteratable iterable ...;
Iterator iterator = iterable.iterator();
iterator.next();
but I am looking for something like:
Iteratable iterable ...;
Iterator iterator = iterable.reverseIterator();
iterator.next();
I see this solution: Iterating through a list in reverse order in java
The current accepted answer says that this works:
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());
}
Anyone know how to implement reverse iteration given only an Iterable
in hand? I don't have an ArrayList
or List in hand, I have an Iterable
in hand. I suppose I can convert the Iterable to an ArrayList, reverse the list, then get an iterator, but that would be no fun :)