Binaryoperator: 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 Boni — Jahresbonus oder Quartalsbonus — höher ist, damit der größere Betrag einem Mitarbeiter zugewiesen werden kann.
Main.java
123456789101112131415package 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 einenBinaryOperator<T>zurück, der anhand des angegebenenComparator<T>den größeren von zwei Werten auswählt;minBy(Comparator<T> comparator)– gibt einenBinaryOperator<T>zurück, der anhand des angegebenenComparator<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
1234567891011121314151617181920212223242526272829303132333435package 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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.33
Binaryoperator: 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 Boni — Jahresbonus oder Quartalsbonus — höher ist, damit der größere Betrag einem Mitarbeiter zugewiesen werden kann.
Main.java
123456789101112131415package 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 einenBinaryOperator<T>zurück, der anhand des angegebenenComparator<T>den größeren von zwei Werten auswählt;minBy(Comparator<T> comparator)– gibt einenBinaryOperator<T>zurück, der anhand des angegebenenComparator<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
1234567891011121314151617181920212223242526272829303132333435package 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?
Danke für Ihr Feedback!