Каковы различия между агрегатной операцией и методом?
..........
Что ж, позвольте мне сказать вам, что я допустил некоторые ошибки: 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.