При изучении Stream API, часто встречал употребление выражений lazy и eager операторы, но нигде толком не мог найти нормальное определение этих понятий.
Может кто нибудь доходчиво объяснить?
В программировании термины:
Например, допустим вы сортируете массив int arr[]- операция достаточно затратная в вычислительном смысле.
Традиционно принято выбирать подход eager, вызываем сортировку массива: Arrays.sort(arr), далее пользуемся результатом.
В случае lazy - массив заранее не сортируем, а сортируем только в момент когда нам понадобится arr[i] - некий элемент сортированного массива - и только тогда вызываем сортировку - чувствуете разницу?
В Stream API почти все операции lazy, промежуточные вычисления производятся только при вызове терминальных операций типа reduce()/count()/collect() и т.д.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей