Что такое lazy и eager операторы?

111
15 октября 2019, 01:50

При изучении Stream API, часто встречал употребление выражений lazy и eager операторы, но нигде толком не мог найти нормальное определение этих понятий.

Может кто нибудь доходчиво объяснить?

Answer 1

В программировании термины:

  • Lazy evaluation означает, что вычисления производятся только тогда когда нужен их результат.
  • Eager evaluation - означает, что вычисления производятся строго по запросу.

Например, допустим вы сортируете массив int arr[]- операция достаточно затратная в вычислительном смысле.

Традиционно принято выбирать подход eager, вызываем сортировку массива: Arrays.sort(arr), далее пользуемся результатом.

В случае lazy - массив заранее не сортируем, а сортируем только в момент когда нам понадобится arr[i] - некий элемент сортированного массива - и только тогда вызываем сортировку - чувствуете разницу?

В Stream API почти все операции lazy, промежуточные вычисления производятся только при вызове терминальных операций типа reduce()/count()/collect() и т.д.

READ ALSO
Java, SpringMVC, Forbidden403, при добавлении в базу данных

Java, SpringMVC, Forbidden403, при добавлении в базу данных

Только начала разбираться со SpringПытаюсь добавить данные в БД и отобразить их списком на страничке

97
Использование web-страниц в JavaFX приложении

Использование web-страниц в JavaFX приложении

Передо мной предстала следующая задача: написать некоторый софт на Java, с применением GUI на JavaFXодной из функций будущей программы должна быть...

129
Обновление списка в RecyclerView

Обновление списка в RecyclerView

Для обновления списка в RecyclerView знаю три способа

169