[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-dlya-chego-nuzhny-funktsionalnye-interfeysy-binaryoperator-doublebinaryoperator-intbinaryoperator-i-longbinaryoperator":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},344,"dlya-chego-nuzhny-funktsionalnye-interfeysy-binaryoperator-doublebinaryoperator-intbinaryoperator-i-longbinaryoperator",10,"java-8","Java 8+","☕","Для чего нужны функциональные интерфейсы BinaryOperator, DoubleBinaryOperator, IntBinaryOperator и LongBinaryOperator?","`BinaryOperator\u003CT>` — специализация `BiFunction\u003CT, T, T>`, принимающая два аргумента одного типа и возвращающая результат того же типа. Типичное применение — агрегация: сложение, конкатенация, выбор максимума.\n\n```java\nBinaryOperator\u003CInteger> sum = (a, b) -> a + b;\nSystem.out.println(sum.apply(1, 2)); \u002F\u002F 3\n```\n\nПримитивные специализации:\n\n| Интерфейс | Работает с типом |\n|-----------|-----------------|\n| `BinaryOperator\u003CT>` | `(T, T) -> T` |\n| `DoubleBinaryOperator` | `(double, double) -> double` |\n| `IntBinaryOperator` | `(int, int) -> int` |\n| `LongBinaryOperator` | `(long, long) -> long` |\n\n`BinaryOperator` активно используется в методе `Stream.reduce()`, где он объединяет элементы потока в единый результат. Статические методы `minBy()` и `maxBy()` позволяют создать оператор выбора минимального или максимального элемента на основе `Comparator`.\n\n> **На собеседовании:** подчеркните, что `BinaryOperator` — это `BiFunction`, у которого все три типа совпадают. Это частый вопрос на понимание иерархии функциональных интерфейсов.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Для чего нужны функциональные интерфейсы ObjDoubleConsumer,  — Gymterview","Эти интерфейсы представляют операцию, принимающую два аргумента — объект типа `T` и примитив — и ничего не возвращающую. Они являются специализированными версия","Эти интерфейсы представляют операцию, принимающую два аргумента — объект типа `T` и примитив — и ничего не возвращающую.",[15,13],"Эти интерфейсы представляют операцию, принимающую два аргумента — объект типа `T` и примитив — и ничего не возвращающую. Они являются специализированными версиями `BiConsumer`, где второй аргумент — примитив, что позволяет избежать автобоксинга.",true]