Une petite astuce en passant : comment parcourir une liste en sens inverse, à l'aide d'un itérateur ?
En utilisant un ListIterator, qui dispose de méthodes hasPrevious() et previous() :

List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5);
ListIterator<Integer> it = nums.listIterator(nums.size());
while(it.hasPrevious()) {
    Integer num = it.previous();
    System.out.println(num);
}
5
4
3
2
1

Ca peut toujours servir !