Я перебираю ArrayList следующим образом:
for (T t : list){
...
}
Когда я это сделал, я никогда не думал, что мне нужно получить доступ к предыдущим и последующим элементам этого элемента. Теперь мой код огромен. Это стоит много, если я переписал его с помощью:
for (int i = 0; i < list.size(); i++){
...
}