Каковы различия между агрегатной операцией и методом?

..........

Что ж, позвольте мне сказать вам, что я допустил некоторые ошибки: foreach(), на который я ссылался, - это не агрегатная операция, а метод из Iteable. Я изменил название своего вопроса и его содержание.

Меня интересует, если агрегатная операция реализована по умолчанию и где я могу найти эту реализацию.

1 ответ

Если вы хотите покопаться в источниках JDK, вы всегда можете скачать их здесь, как подсказывает @jbkm. Если у вас установлен Oracle JDK, должно быть src.zip файл в папке установки, которая содержит все общедоступные источники. В качестве альтернативы вы можете проверить исходные коды OpenJDK онлайн, например, на GrepCode. Как видите, реализацияforEachзаIterableдовольно просто:

default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

Если вы спрашиваете о реализацииforEachв Stream API это гораздо сложнее, так как он должен оценивать все предыдущие шаги конвейера и выполнять операцию параллельно для параллельных потоков. Вы можете начать свое расследование с изученияReferencePipeline класс, который является Stream реализация в OpenJDK.

Другие вопросы по тегам