Существуют следующие способы:
- С помощью циклов for или while. В этом случае индексная переменная увеличивается от 0 до размера коллекции, определить который можно с помощью функции size(). В этом случае можно организовать неполный обход или обход с не стандартным шагом. Но в этом случае легко ошибиться с индексами. Этот способ требует написания достаточно большого количества кода.
- Можно вызвать метод iterator, который вернёт объект-итератор, у которого нужно будет вызывать функцию next до тех пор, пока метод hasNext не вернёт false. Этот метод позволяет передавать элементы коллекции в сторонний код, не трогая саму коллекцию. Для реализации этого метода также нужно достаточно много кода.
- for iterable рекомендуется использовать когда требуется организовать простой обход, но в этом случае невозможно модифицировать элементы коллекции.
- Ещё один вариант, создать на базе коллекции стрим и работать с ним. Это позволяет использовать большие возможности Java Steam API, например, фильтрацию или преобразование элементов.
- В Java 8 появились средства для удобной работы не только со строками. Есть методы forEach, который можно использовать для обхода или replaceAll, обычно используемый для модификации элементов.