Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Binaryoperator: Kombinieren von Zwei Werten | Grundlagen und Funktionale Möglichkeiten der Stream-API
Stream-API

bookBinaryoperator: Kombinieren von Zwei Werten

Dieses Interface ist besonders nützlich, wenn zwei Werte desselben Typs kombiniert werden sollen, beispielsweise bei mathematischen Berechnungen oder beim Zusammenführen von Daten.

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

Das BinaryOperator<T>-Interface erweitert BiFunction<T, T, T>, aber im Gegensatz zu BiFunction müssen sowohl die Eingabeargumente als auch der Rückgabewert immer vom gleichen Typ T sein.

Die einzige abstrakte Methode, apply(T t1, T t2), führt eine Operation auf zwei Argumenten aus und gibt das Ergebnis zurück.

Praktisches Beispiel

Angenommen, Sie verfügen über ein Gehaltsabrechnungssystem, in dem ermittelt werden muss, welcher von zwei BoniJahresbonus oder Quartalsbonushöher ist, damit der größere Betrag einem Mitarbeiter zugewiesen werden kann.

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); } }

In diesem Beispiel wird ein BinaryOperator<Double> erstellt, der Math.max() verwendet, um zwei Werte zu vergleichen und den größeren zurückzugeben.

Anschließend werden zwei Boni definiert: annualBonus (Jahresbonus) und quarterlyBonus (Quartalsbonus).

Die Methode apply() wird aufgerufen, um den höheren Bonus zu bestimmen, und das Ergebnis wird auf der Konsole ausgegeben. Dieser Ansatz ist nützlich, wenn die dynamische Auswahl der besten Option ohne komplexe bedingte Logik erforderlich ist.

Statische Methoden

Zusätzlich zur primären apply()-Methode bietet BinaryOperator<T> mehrere nützliche statische Methoden:

  • maxBy(Comparator<T> comparator) – gibt einen BinaryOperator<T> zurück, der anhand des angegebenen Comparator<T> den größeren von zwei Werten auswählt;
  • minBy(Comparator<T> comparator) – gibt einen BinaryOperator<T> zurück, der anhand des angegebenen Comparator<T> den kleineren von zwei Werten auswählt.

Anwendungsbeispiel

Angenommen, Sie verfügen über ein Mitarbeiterverwaltungssystem, in dem Sie bestimmen müssen, welcher von zwei Kandidaten eine höhere Bewertung hat, um den besten für eine Beförderung auszuwählen.

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; } }

Die Methode BinaryOperator.maxBy() nimmt einen Comparator<Employee>, der Employee::getRating verwendet, um Mitarbeiter anhand ihrer Bewertungen zu vergleichen.

Zwei Employee-Objekte werden anschließend mit unterschiedlichen Bewertungen erstellt. Die Methode apply() wählt den Mitarbeiter mit der höchsten Bewertung aus und gibt dessen Namen aus.

1. Was ist der Hauptzweck des funktionalen Interfaces BinaryOperator<T>?

2. Was ist die Hauptmethode im Interface BinaryOperator<T>?

3. Welches Interface ist das übergeordnete von BinaryOperator<T>?

4. Welche Ausgabe erzeugt der folgende Code?

question mark

Was ist der Hauptzweck des funktionalen Interfaces BinaryOperator<T>?

Select the correct answer

question mark

Was ist die Hauptmethode im Interface BinaryOperator<T>?

Select the correct answer

question mark

Welches Interface ist das übergeordnete von BinaryOperator<T>?

Select the correct answer

question mark

Welche Ausgabe erzeugt der folgende Code?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 15

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.33

bookBinaryoperator: Kombinieren von Zwei Werten

Swipe um das Menü anzuzeigen

Dieses Interface ist besonders nützlich, wenn zwei Werte desselben Typs kombiniert werden sollen, beispielsweise bei mathematischen Berechnungen oder beim Zusammenführen von Daten.

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

Das BinaryOperator<T>-Interface erweitert BiFunction<T, T, T>, aber im Gegensatz zu BiFunction müssen sowohl die Eingabeargumente als auch der Rückgabewert immer vom gleichen Typ T sein.

Die einzige abstrakte Methode, apply(T t1, T t2), führt eine Operation auf zwei Argumenten aus und gibt das Ergebnis zurück.

Praktisches Beispiel

Angenommen, Sie verfügen über ein Gehaltsabrechnungssystem, in dem ermittelt werden muss, welcher von zwei BoniJahresbonus oder Quartalsbonushöher ist, damit der größere Betrag einem Mitarbeiter zugewiesen werden kann.

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); } }

In diesem Beispiel wird ein BinaryOperator<Double> erstellt, der Math.max() verwendet, um zwei Werte zu vergleichen und den größeren zurückzugeben.

Anschließend werden zwei Boni definiert: annualBonus (Jahresbonus) und quarterlyBonus (Quartalsbonus).

Die Methode apply() wird aufgerufen, um den höheren Bonus zu bestimmen, und das Ergebnis wird auf der Konsole ausgegeben. Dieser Ansatz ist nützlich, wenn die dynamische Auswahl der besten Option ohne komplexe bedingte Logik erforderlich ist.

Statische Methoden

Zusätzlich zur primären apply()-Methode bietet BinaryOperator<T> mehrere nützliche statische Methoden:

  • maxBy(Comparator<T> comparator) – gibt einen BinaryOperator<T> zurück, der anhand des angegebenen Comparator<T> den größeren von zwei Werten auswählt;
  • minBy(Comparator<T> comparator) – gibt einen BinaryOperator<T> zurück, der anhand des angegebenen Comparator<T> den kleineren von zwei Werten auswählt.

Anwendungsbeispiel

Angenommen, Sie verfügen über ein Mitarbeiterverwaltungssystem, in dem Sie bestimmen müssen, welcher von zwei Kandidaten eine höhere Bewertung hat, um den besten für eine Beförderung auszuwählen.

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; } }

Die Methode BinaryOperator.maxBy() nimmt einen Comparator<Employee>, der Employee::getRating verwendet, um Mitarbeiter anhand ihrer Bewertungen zu vergleichen.

Zwei Employee-Objekte werden anschließend mit unterschiedlichen Bewertungen erstellt. Die Methode apply() wählt den Mitarbeiter mit der höchsten Bewertung aus und gibt dessen Namen aus.

1. Was ist der Hauptzweck des funktionalen Interfaces BinaryOperator<T>?

2. Was ist die Hauptmethode im Interface BinaryOperator<T>?

3. Welches Interface ist das übergeordnete von BinaryOperator<T>?

4. Welche Ausgabe erzeugt der folgende Code?

question mark

Was ist der Hauptzweck des funktionalen Interfaces BinaryOperator<T>?

Select the correct answer

question mark

Was ist die Hauptmethode im Interface BinaryOperator<T>?

Select the correct answer

question mark

Welches Interface ist das übergeordnete von BinaryOperator<T>?

Select the correct answer

question mark

Welche Ausgabe erzeugt der folgende Code?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 15
some-alt