Встречается на 12% собеседований по Java

В чём отличие Supplier'а от Consumer'а

`Supplier` и `Consumer` являются функциональными интерфейсами, введёнными в Java 8 в рамках Stream API и пакета `java.util.function`. Они оба используются в лямбда-выражениях, методах ссылках и потоках данных, но служат разным целям и имеют противоположные действия.

Supplier

Представляет собой функциональный интерфейс, который поставляет результат заданного типа `T`. Интерфейс не принимает никаких аргументов, но возвращает значение типа `T`. Это может быть полезно, когда вам нужно лениво генерировать или поставлять значения, например, при создании новых объектов или выполнении операций, результат которых необходимо вернуть.

Пример использования Supplier:

java
Supplier<String> stringSupplier = () -> "Hello, World!";
System.out.println(stringSupplier.get()); // Выводит "Hello, World!"

Consumer

Это функциональный интерфейс, предназначенный для выполнения операции над объектом типа `T`. Он принимает один аргумент и не возвращает результат (возвращаемый тип `void`). Это полезно, когда вам нужно выполнить какое-либо действие или операцию над объектом, например, напечатать его, изменить его состояние и т.д., без возвращения какого-либо значения.

Пример использования Consumer:

java
Consumer<String> stringConsumer = s -> System.out.println(s);
stringConsumer.accept("Hello, World!"); // Выводит "Hello, World!"

Основное отличие между `Supplier` и `Consumer` заключается в их назначении и способе работы:

  • Supplier используется для получения или генерации данных без каких-либо входных параметров. Он «поставляет» данные.
  • Consumer используется для выполнения операций над данными, которые он принимает в качестве параметров, и не возвращает никакого результата. Он «потребляет» данные.

`Supplier` и `Consumer` представляют две разные операции: поставку данных и их потребление соответственно, что делает их важными компонентами для реализации функционального стиля программирования.

March 9, 2024, easyoffer

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы