Binaryoperator: Kombinering Af To Værdier
Dette interface er særligt nyttigt, når der skal kombineres to værdier af samme type, såsom ved matematiske beregninger eller sammenfletning af data.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T> interfacet udvider BiFunction<T, T, T>, men i modsætning til BiFunction skal både inputargumenterne og returneringsværdien altid være af samme type T.
Dets eneste abstrakte metode, apply(T t1, T t2), udfører en operation på to argumenter og returnerer resultatet.
Praktisk eksempel
Antag, at du har et lønsystem, hvor du skal afgøre, hvilken af to bonusser — årlig eller kvartalsvis — der er højest, så det største beløb kan tildeles en medarbejder.
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 eksempel oprettes en BinaryOperator<Double>, der anvender Math.max() til at sammenligne to værdier og returnere den største.
Derefter defineres to bonusser: annualBonus (årlig bonus) og quarterlyBonus (kvartalsvis bonus).
Metoden apply() kaldes for at bestemme den højeste bonus, og resultatet udskrives til konsollen. Denne fremgangsmåde er nyttig, når du skal vælge den bedste mulighed dynamisk uden kompleks betinget logik.
Statisk metoder
Ud over sin primære apply() metode indeholder BinaryOperator<T> flere nyttige statiske metoder:
maxBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>, der vælger den største af to værdier baseret på den angivneComparator<T>;minBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>, der vælger den mindste af to værdier baseret på den angivneComparator<T>.
Eksempel på anvendelse
Antag, at du har et medarbejderstyringssystem, hvor du skal afgøre, hvilken af to kandidater der har en højere vurdering for at vælge den bedste 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; } }
Metoden BinaryOperator.maxBy() modtager en Comparator<Employee>, som bruger Employee::getRating til at sammenligne medarbejdere efter deres bedømmelser.
To Employee-objekter oprettes derefter med forskellige bedømmelser. Metoden apply() vælger medarbejderen med den højeste bedømmelse og udskriver deres navn.
1. Hvad er hovedformålet med det funktionelle interface BinaryOperator<T>?
2. Hvad er den primære metode i interfacet BinaryOperator<T>?
3. Hvilket interface er forælder til BinaryOperator<T>?
4. Hvad vil følgende kode udskrive?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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 Af To Værdier
Stryg for at vise menuen
Dette interface er særligt nyttigt, når der skal kombineres to værdier af samme type, såsom ved matematiske beregninger eller sammenfletning af data.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T> interfacet udvider BiFunction<T, T, T>, men i modsætning til BiFunction skal både inputargumenterne og returneringsværdien altid være af samme type T.
Dets eneste abstrakte metode, apply(T t1, T t2), udfører en operation på to argumenter og returnerer resultatet.
Praktisk eksempel
Antag, at du har et lønsystem, hvor du skal afgøre, hvilken af to bonusser — årlig eller kvartalsvis — der er højest, så det største beløb kan tildeles en medarbejder.
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 eksempel oprettes en BinaryOperator<Double>, der anvender Math.max() til at sammenligne to værdier og returnere den største.
Derefter defineres to bonusser: annualBonus (årlig bonus) og quarterlyBonus (kvartalsvis bonus).
Metoden apply() kaldes for at bestemme den højeste bonus, og resultatet udskrives til konsollen. Denne fremgangsmåde er nyttig, når du skal vælge den bedste mulighed dynamisk uden kompleks betinget logik.
Statisk metoder
Ud over sin primære apply() metode indeholder BinaryOperator<T> flere nyttige statiske metoder:
maxBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>, der vælger den største af to værdier baseret på den angivneComparator<T>;minBy(Comparator<T> comparator)– returnerer enBinaryOperator<T>, der vælger den mindste af to værdier baseret på den angivneComparator<T>.
Eksempel på anvendelse
Antag, at du har et medarbejderstyringssystem, hvor du skal afgøre, hvilken af to kandidater der har en højere vurdering for at vælge den bedste 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; } }
Metoden BinaryOperator.maxBy() modtager en Comparator<Employee>, som bruger Employee::getRating til at sammenligne medarbejdere efter deres bedømmelser.
To Employee-objekter oprettes derefter med forskellige bedømmelser. Metoden apply() vælger medarbejderen med den højeste bedømmelse og udskriver deres navn.
1. Hvad er hovedformålet med det funktionelle interface BinaryOperator<T>?
2. Hvad er den primære metode i interfacet BinaryOperator<T>?
3. Hvilket interface er forælder til BinaryOperator<T>?
4. Hvad vil følgende kode udskrive?
Tak for dine kommentarer!