Использование Iterator
обеспечивает гораздо более безопасный доступ к List
извне определяющего class
, поскольку вы не можете случайно переопределить, например, весь List
. Вы можете получить доступ только к одному элементу за раз: к верхнему.
Таким образом, наша рекомендация - использовать только подход for each
внутри определяющего класса, и всякий раз, когда необходимо получить доступ к списку извне, следует использовать итератор. Это также усиливает концепцию сохранения логики изменения члена внутри class
, который его содержит. Все сложные операции, которые необходимы снаружи, должны быть реализованы в public
методах внутри этого class
.