Well, this
can be done pretty easily with
Guava:
The object returned by Lists.reverse() is a view of the underlying list. If you look at how it implements iterator(),
you should find that it returns an Iterator that is actually using a ListIterator and is using it in reverse.