Binaryoperator: Kombinering av To Verdier
Dette grensesnittet er spesielt nyttig når man kombinerer to verdier av samme type, for eksempel ved matematiske beregninger eller sammenslåing av data.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T>-grensesnittet utvider BiFunction<T, T, T>, men i motsetning til BiFunction må både inngangsargumentene og returverdien alltid være av samme type T.
Dets eneste abstrakte metode, apply(T t1, T t2), utfører en operasjon på to argumenter og returnerer resultatet.
Praktisk eksempel
Anta at du har et lønnssystem hvor du må avgjøre hvilken av to bonuser — årlig eller kvartalsvis — som er høyest, slik at det største beløpet kan tildeles en ansatt.
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); } }
I dette eksempelet oppretter du en BinaryOperator<Double> som bruker Math.max() for å sammenligne to verdier og returnere den største.
Deretter definerer du to bonuser: annualBonus (årlig bonus) og quarterlyBonus (kvartalsvis bonus).
Metoden apply() kalles for å avgjøre hvilken bonus som er høyest, og resultatet skrives ut til konsollen. Denne metoden er nyttig når du må velge det beste alternativet dynamisk uten komplisert betingelseslogikk.
Statisk metoder
I tillegg til sin primære apply() metode, inkluderer BinaryOperator<T> flere nyttige statiske metoder:
maxBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>som velger den største av to verdier basert på den angitteComparator<T>;minBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>som velger den minste av to verdier basert på den angitteComparator<T>.
Eksempel på bruk
Anta at du har et ansattadministrasjonssystem hvor du må avgjøre hvilken av to kandidater som har en høyere vurdering for å velge den beste til en forfremmelse.
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; } }
BinaryOperator.maxBy()-metoden tar en Comparator<Employee>, som bruker Employee::getRating for å sammenligne ansatte etter deres vurderinger.
To Employee-objekter opprettes deretter med ulike vurderinger. apply()-metoden velger den ansatte med høyest vurdering og skriver ut navnet deres.
1. Hva er hovedformålet med det funksjonelle grensesnittet BinaryOperator<T>?
2. Hva er hovedmetoden i grensesnittet BinaryOperator<T>?
3. Hvilket grensesnitt er forelder til BinaryOperator<T>?
4. Hva vil følgende kode skrive ut?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 2.33
Binaryoperator: Kombinering av To Verdier
Sveip for å vise menyen
Dette grensesnittet er spesielt nyttig når man kombinerer to verdier av samme type, for eksempel ved matematiske beregninger eller sammenslåing av data.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T>-grensesnittet utvider BiFunction<T, T, T>, men i motsetning til BiFunction må både inngangsargumentene og returverdien alltid være av samme type T.
Dets eneste abstrakte metode, apply(T t1, T t2), utfører en operasjon på to argumenter og returnerer resultatet.
Praktisk eksempel
Anta at du har et lønnssystem hvor du må avgjøre hvilken av to bonuser — årlig eller kvartalsvis — som er høyest, slik at det største beløpet kan tildeles en ansatt.
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); } }
I dette eksempelet oppretter du en BinaryOperator<Double> som bruker Math.max() for å sammenligne to verdier og returnere den største.
Deretter definerer du to bonuser: annualBonus (årlig bonus) og quarterlyBonus (kvartalsvis bonus).
Metoden apply() kalles for å avgjøre hvilken bonus som er høyest, og resultatet skrives ut til konsollen. Denne metoden er nyttig når du må velge det beste alternativet dynamisk uten komplisert betingelseslogikk.
Statisk metoder
I tillegg til sin primære apply() metode, inkluderer BinaryOperator<T> flere nyttige statiske metoder:
maxBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>som velger den største av to verdier basert på den angitteComparator<T>;minBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>som velger den minste av to verdier basert på den angitteComparator<T>.
Eksempel på bruk
Anta at du har et ansattadministrasjonssystem hvor du må avgjøre hvilken av to kandidater som har en høyere vurdering for å velge den beste til en forfremmelse.
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; } }
BinaryOperator.maxBy()-metoden tar en Comparator<Employee>, som bruker Employee::getRating for å sammenligne ansatte etter deres vurderinger.
To Employee-objekter opprettes deretter med ulike vurderinger. apply()-metoden velger den ansatte med høyest vurdering og skriver ut navnet deres.
1. Hva er hovedformålet med det funksjonelle grensesnittet BinaryOperator<T>?
2. Hva er hovedmetoden i grensesnittet BinaryOperator<T>?
3. Hvilket grensesnitt er forelder til BinaryOperator<T>?
4. Hva vil følgende kode skrive ut?
Takk for tilbakemeldingene dine!