The first one is useful when you need the index of the element as well. This is basically equivalent to the other two variants for ArrayList
s, but will be really slow if you use a LinkedList
.
The second one is useful when you don’t need the index of the element but might need to remove the elements as you iterate. But this has the disadvantage of being a little too verbose IMO.
The third version is my preferred choice as well. It is short and works for all cases where you do not need any indexes or the underlying iterator (i.e. you are only accessing elements, not removing them or modifying the Collection
in any way – which is the most common case).