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
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
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!