Binaryoperator: Twee Waarden Combineren
Deze interface is bijzonder nuttig bij het combineren van twee waarden van hetzelfde type, zoals het uitvoeren van wiskundige berekeningen of het samenvoegen van gegevens.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
De BinaryOperator<T> interface breidt BiFunction<T, T, T> uit, maar in tegenstelling tot BiFunction moeten zowel de invoervariabelen als de returnwaarde altijd van hetzelfde type T zijn.
De enige abstracte methode, apply(T t1, T t2), voert een bewerking uit op twee argumenten en geeft het resultaat terug.
Praktisch Voorbeeld
Stel, u heeft een loonadministratiesysteem waarin u moet bepalen welke van twee bonussen — jaarlijks of per kwartaal — hoger is, zodat het grotere bedrag kan worden toegekend aan een werknemer.
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 dit voorbeeld maakt u een BinaryOperator<Double> aan die Math.max() gebruikt om twee waarden te vergelijken en de grootste te retourneren.
Vervolgens definieert u twee bonussen: annualBonus (jaarlijkse bonus) en quarterlyBonus (kwartaalbonus).
De methode apply() wordt aangeroepen om de hoogste bonus te bepalen, en het resultaat wordt afgedrukt op de console. Deze benadering is nuttig wanneer u dynamisch de beste optie wilt selecteren zonder complexe voorwaardelijke logica.
Statische methoden
Naast de primaire apply() methode bevat BinaryOperator<T> verschillende nuttige statische methoden:
maxBy(Comparator<T> comparator)– retourneert eenBinaryOperator<T>die de grotere van twee waarden selecteert op basis van de opgegevenComparator<T>;minBy(Comparator<T> comparator)– retourneert eenBinaryOperator<T>die de kleinere van twee waarden selecteert op basis van de opgegevenComparator<T>.
Voorbeeld van gebruik
Stel dat er een personeelsbeheersysteem is waarin bepaald moet worden welke van twee kandidaten een hogere beoordeling heeft om zo de beste te selecteren voor een promotie.
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; } }
De methode BinaryOperator.maxBy() neemt een Comparator<Employee>, die Employee::getRating gebruikt om werknemers te vergelijken op basis van hun beoordelingen.
Twee Employee-objecten worden vervolgens aangemaakt met verschillende beoordelingen. De methode apply() selecteert de werknemer met de hoogste beoordeling en drukt hun naam af.
1. Wat is het belangrijkste doel van de functionele interface BinaryOperator<T>?
2. Wat is de primaire methode in de interface BinaryOperator<T>?
3. Welke interface is de bovenliggende van BinaryOperator<T>?
4. Wat zal de volgende code als uitvoer geven?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.33
Binaryoperator: Twee Waarden Combineren
Veeg om het menu te tonen
Deze interface is bijzonder nuttig bij het combineren van twee waarden van hetzelfde type, zoals het uitvoeren van wiskundige berekeningen of het samenvoegen van gegevens.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
De BinaryOperator<T> interface breidt BiFunction<T, T, T> uit, maar in tegenstelling tot BiFunction moeten zowel de invoervariabelen als de returnwaarde altijd van hetzelfde type T zijn.
De enige abstracte methode, apply(T t1, T t2), voert een bewerking uit op twee argumenten en geeft het resultaat terug.
Praktisch Voorbeeld
Stel, u heeft een loonadministratiesysteem waarin u moet bepalen welke van twee bonussen — jaarlijks of per kwartaal — hoger is, zodat het grotere bedrag kan worden toegekend aan een werknemer.
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 dit voorbeeld maakt u een BinaryOperator<Double> aan die Math.max() gebruikt om twee waarden te vergelijken en de grootste te retourneren.
Vervolgens definieert u twee bonussen: annualBonus (jaarlijkse bonus) en quarterlyBonus (kwartaalbonus).
De methode apply() wordt aangeroepen om de hoogste bonus te bepalen, en het resultaat wordt afgedrukt op de console. Deze benadering is nuttig wanneer u dynamisch de beste optie wilt selecteren zonder complexe voorwaardelijke logica.
Statische methoden
Naast de primaire apply() methode bevat BinaryOperator<T> verschillende nuttige statische methoden:
maxBy(Comparator<T> comparator)– retourneert eenBinaryOperator<T>die de grotere van twee waarden selecteert op basis van de opgegevenComparator<T>;minBy(Comparator<T> comparator)– retourneert eenBinaryOperator<T>die de kleinere van twee waarden selecteert op basis van de opgegevenComparator<T>.
Voorbeeld van gebruik
Stel dat er een personeelsbeheersysteem is waarin bepaald moet worden welke van twee kandidaten een hogere beoordeling heeft om zo de beste te selecteren voor een promotie.
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; } }
De methode BinaryOperator.maxBy() neemt een Comparator<Employee>, die Employee::getRating gebruikt om werknemers te vergelijken op basis van hun beoordelingen.
Twee Employee-objecten worden vervolgens aangemaakt met verschillende beoordelingen. De methode apply() selecteert de werknemer met de hoogste beoordeling en drukt hun naam af.
1. Wat is het belangrijkste doel van de functionele interface BinaryOperator<T>?
2. Wat is de primaire methode in de interface BinaryOperator<T>?
3. Welke interface is de bovenliggende van BinaryOperator<T>?
4. Wat zal de volgende code als uitvoer geven?
Bedankt voor je feedback!