В базовой комплектации интерфейс Collection позволяет извлекать объекты через iterator(). Чуть позже в новых версиях jdk - появляется последовательный stream(), который вызывает iterator. И параллельный stream, который не всегда поддерживается для всех реализаций коллекций. Например файл класса STDIN - только последователен и обернуть его параллелизмом - принципиально невозможно.
Все прочие магические методы - просто переходники или адаптеры над итератором.