Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте BinaryOperator: Об'єднання Двох Значень | Основи Та Функціональні Можливості Stream API
Stream API

bookBinaryOperator: Об'єднання Двох Значень

Цей інтерфейс є особливо корисним для об'єднання двох значень одного типу, наприклад, для виконання математичних обчислень або злиття даних.

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
    T apply(T t1, T t2);
}

BinaryOperator<T> інтерфейс розширює BiFunction<T, T, T>, але на відміну від BiFunction, обидва вхідних аргументи та значення, що повертається, завжди повинні бути одного типу T.

Його єдиний абстрактний метод apply(T t1, T t2) виконує операцію над двома аргументами та повертає результат.

Практичний приклад

Припустимо, у вас є система нарахування заробітної плати, де потрібно визначити, яка з двох премійрічна чи квартальна — є більшою, щоб виплатити співробітнику найбільшу суму.

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Double> maxBonus = (bonus1, bonus2) -> Math.max(bonus1, bonus2); double annualBonus = 5000.0; double quarterlyBonus = 1500.0; double finalBonus = maxBonus.apply(annualBonus, quarterlyBonus); System.out.println("Awarded Bonus: " + finalBonus); } }

У цьому прикладі створюється BinaryOperator<Double>, який використовує Math.max() для порівняння двох значень і повертає більше з них.

Далі визначаються дві премії: annualBonus (річна премія) та quarterlyBonus (квартальна премія).

Викликається метод apply() для визначення більшої премії, а результат виводиться у консоль. Такий підхід є корисним, коли потрібно динамічно обирати найкращий варіант без складної умовної логіки.

Статичні методи

Окрім основного методу apply(), інтерфейс BinaryOperator<T> містить кілька корисних статичних методів:

  • maxBy(Comparator<T> comparator) – повертає BinaryOperator<T>, який обирає більше з двох значень на основі наданого Comparator<T>;
  • minBy(Comparator<T> comparator) – повертає BinaryOperator<T>, який обирає менше з двох значень на основі наданого Comparator<T>.

Приклад використання

Припустимо, у вас є система управління співробітниками, де потрібно визначити, який з двох кандидатів має вищий рейтинг, щоб обрати найкращого для підвищення.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435
package com.example; import java.util.Comparator; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Employee> topPerformer = BinaryOperator.maxBy(Comparator.comparingInt(Employee::getRating)); Employee employee1 = new Employee("John", 85); Employee employee2 = new Employee("Sarah", 90); Employee bestEmployee = topPerformer.apply(employee1, employee2); System.out.println("Top employee: " + bestEmployee.getName()); } } class Employee { private String name; private int rating; public Employee(String name, int rating) { this.name = name; this.rating = rating; } public String getName() { return name; } public int getRating() { return rating; } }

Метод BinaryOperator.maxBy() приймає Comparator<Employee>, який використовує Employee::getRating для порівняння співробітників за їхніми рейтингами.

Два об'єкти Employee потім створюються з різними рейтингами. Метод apply() обирає співробітника з найвищим рейтингом і виводить його ім'я.

1. Яке основне призначення функціонального інтерфейсу BinaryOperator<T>?

2. Який основний метод у інтерфейсі BinaryOperator<T>?

3. Який інтерфейс є батьківським для BinaryOperator<T>?

4. Який результат виведе наступний код?

question mark

Яке основне призначення функціонального інтерфейсу BinaryOperator<T>?

Select the correct answer

question mark

Який основний метод у інтерфейсі BinaryOperator<T>?

Select the correct answer

question mark

Який інтерфейс є батьківським для BinaryOperator<T>?

Select the correct answer

question mark

Який результат виведе наступний код?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 15

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you provide a code example using BinaryOperator in this context?

How does BinaryOperator differ from BiFunction in practical use?

Can you explain how to use maxBy and minBy with custom objects?

Awesome!

Completion rate improved to 2.33

bookBinaryOperator: Об'єднання Двох Значень

Свайпніть щоб показати меню

Цей інтерфейс є особливо корисним для об'єднання двох значень одного типу, наприклад, для виконання математичних обчислень або злиття даних.

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
    T apply(T t1, T t2);
}

BinaryOperator<T> інтерфейс розширює BiFunction<T, T, T>, але на відміну від BiFunction, обидва вхідних аргументи та значення, що повертається, завжди повинні бути одного типу T.

Його єдиний абстрактний метод apply(T t1, T t2) виконує операцію над двома аргументами та повертає результат.

Практичний приклад

Припустимо, у вас є система нарахування заробітної плати, де потрібно визначити, яка з двох премійрічна чи квартальна — є більшою, щоб виплатити співробітнику найбільшу суму.

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Double> maxBonus = (bonus1, bonus2) -> Math.max(bonus1, bonus2); double annualBonus = 5000.0; double quarterlyBonus = 1500.0; double finalBonus = maxBonus.apply(annualBonus, quarterlyBonus); System.out.println("Awarded Bonus: " + finalBonus); } }

У цьому прикладі створюється BinaryOperator<Double>, який використовує Math.max() для порівняння двох значень і повертає більше з них.

Далі визначаються дві премії: annualBonus (річна премія) та quarterlyBonus (квартальна премія).

Викликається метод apply() для визначення більшої премії, а результат виводиться у консоль. Такий підхід є корисним, коли потрібно динамічно обирати найкращий варіант без складної умовної логіки.

Статичні методи

Окрім основного методу apply(), інтерфейс BinaryOperator<T> містить кілька корисних статичних методів:

  • maxBy(Comparator<T> comparator) – повертає BinaryOperator<T>, який обирає більше з двох значень на основі наданого Comparator<T>;
  • minBy(Comparator<T> comparator) – повертає BinaryOperator<T>, який обирає менше з двох значень на основі наданого Comparator<T>.

Приклад використання

Припустимо, у вас є система управління співробітниками, де потрібно визначити, який з двох кандидатів має вищий рейтинг, щоб обрати найкращого для підвищення.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435
package com.example; import java.util.Comparator; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Employee> topPerformer = BinaryOperator.maxBy(Comparator.comparingInt(Employee::getRating)); Employee employee1 = new Employee("John", 85); Employee employee2 = new Employee("Sarah", 90); Employee bestEmployee = topPerformer.apply(employee1, employee2); System.out.println("Top employee: " + bestEmployee.getName()); } } class Employee { private String name; private int rating; public Employee(String name, int rating) { this.name = name; this.rating = rating; } public String getName() { return name; } public int getRating() { return rating; } }

Метод BinaryOperator.maxBy() приймає Comparator<Employee>, який використовує Employee::getRating для порівняння співробітників за їхніми рейтингами.

Два об'єкти Employee потім створюються з різними рейтингами. Метод apply() обирає співробітника з найвищим рейтингом і виводить його ім'я.

1. Яке основне призначення функціонального інтерфейсу BinaryOperator<T>?

2. Який основний метод у інтерфейсі BinaryOperator<T>?

3. Який інтерфейс є батьківським для BinaryOperator<T>?

4. Який результат виведе наступний код?

question mark

Яке основне призначення функціонального інтерфейсу BinaryOperator<T>?

Select the correct answer

question mark

Який основний метод у інтерфейсі BinaryOperator<T>?

Select the correct answer

question mark

Який інтерфейс є батьківським для BinaryOperator<T>?

Select the correct answer

question mark

Який результат виведе наступний код?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 15
some-alt