Binaryoperator: Kahden Arvon Yhdistäminen
Tämä rajapinta on erityisen hyödyllinen kun yhdistetään kaksi saman tyyppistä arvoa, kuten suoritettaessa matemaattisia laskutoimituksia tai yhdistettäessä dataa.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T> -rajapinta laajentaa rajapintaa BiFunction<T, T, T>, mutta toisin kuin BiFunction, sekä syöteargumenttien että paluuarvon on aina oltava samaa tyyppiä T.
Sen ainoa abstrakti metodi, apply(T t1, T t2), suorittaa operaation kahdella argumentilla ja palauttaa tuloksen.
Käytännön esimerkki
Oletetaan, että käytössä on palkanlaskentajärjestelmä, jossa täytyy selvittää, kumpi kahdesta bonuksesta — vuosittainen vai kvartaaleittain maksettava — on suurempi, jotta suurempi summa voidaan myöntää työntekijälle.
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); } }
Tässä esimerkissä luodaan BinaryOperator<Double>, joka hyödyntää Math.max()-metodia vertaillakseen kahta arvoa ja palauttaakseen suuremman.
Määritellään kaksi bonusta: annualBonus (vuosibonus) ja quarterlyBonus (kvartaaleittain maksettava bonus).
apply()-metodia käytetään selvittämään suurempi bonus, ja tulos tulostetaan konsoliin. Tämä menetelmä on hyödyllinen, kun täytyy valita paras vaihtoehto dynaamisesti ilman monimutkaista ehtologiikkaa.
Staattiset metodit
Pääasiallisen apply() metodin lisäksi BinaryOperator<T> sisältää useita hyödyllisiä staattisia metodeja:
maxBy(Comparator<T> comparator)– palauttaaBinaryOperator<T>, joka valitsee kahdesta arvosta suuremman annetunComparator<T>-vertailijan perusteella;minBy(Comparator<T> comparator)– palauttaaBinaryOperator<T>, joka valitsee kahdesta arvosta pienemmän annetunComparator<T>-vertailijan perusteella.
Esimerkkikäyttö
Oletetaan, että käytössä on henkilöstöhallintajärjestelmä, jossa täytyy määrittää, kummalla kahdesta ehdokkaasta on korkeampi arviointi valittaessa paras henkilö ylennykseen.
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() -metodi ottaa vastaan Comparator<Employee>-vertailijan, joka käyttää Employee::getRating-metodia verratakseen työntekijöitä heidän arvosanojensa perusteella.
Kaksi Employee-oliota luodaan eri arvosanoilla. apply()-metodi valitsee työntekijän, jolla on korkein arvosana, ja tulostaa hänen nimensä.
1. Mikä on BinaryOperator<T>-funktionaalisen rajapinnan päätarkoitus?
2. Mikä on BinaryOperator<T>-rajapinnan pääasiallinen metodi?
3. Mikä rajapinta on BinaryOperator<T>:n ylärajapinta?
4. Mitä seuraava koodi tulostaa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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: Kahden Arvon Yhdistäminen
Pyyhkäise näyttääksesi valikon
Tämä rajapinta on erityisen hyödyllinen kun yhdistetään kaksi saman tyyppistä arvoa, kuten suoritettaessa matemaattisia laskutoimituksia tai yhdistettäessä dataa.
@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
T apply(T t1, T t2);
}
BinaryOperator<T> -rajapinta laajentaa rajapintaa BiFunction<T, T, T>, mutta toisin kuin BiFunction, sekä syöteargumenttien että paluuarvon on aina oltava samaa tyyppiä T.
Sen ainoa abstrakti metodi, apply(T t1, T t2), suorittaa operaation kahdella argumentilla ja palauttaa tuloksen.
Käytännön esimerkki
Oletetaan, että käytössä on palkanlaskentajärjestelmä, jossa täytyy selvittää, kumpi kahdesta bonuksesta — vuosittainen vai kvartaaleittain maksettava — on suurempi, jotta suurempi summa voidaan myöntää työntekijälle.
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); } }
Tässä esimerkissä luodaan BinaryOperator<Double>, joka hyödyntää Math.max()-metodia vertaillakseen kahta arvoa ja palauttaakseen suuremman.
Määritellään kaksi bonusta: annualBonus (vuosibonus) ja quarterlyBonus (kvartaaleittain maksettava bonus).
apply()-metodia käytetään selvittämään suurempi bonus, ja tulos tulostetaan konsoliin. Tämä menetelmä on hyödyllinen, kun täytyy valita paras vaihtoehto dynaamisesti ilman monimutkaista ehtologiikkaa.
Staattiset metodit
Pääasiallisen apply() metodin lisäksi BinaryOperator<T> sisältää useita hyödyllisiä staattisia metodeja:
maxBy(Comparator<T> comparator)– palauttaaBinaryOperator<T>, joka valitsee kahdesta arvosta suuremman annetunComparator<T>-vertailijan perusteella;minBy(Comparator<T> comparator)– palauttaaBinaryOperator<T>, joka valitsee kahdesta arvosta pienemmän annetunComparator<T>-vertailijan perusteella.
Esimerkkikäyttö
Oletetaan, että käytössä on henkilöstöhallintajärjestelmä, jossa täytyy määrittää, kummalla kahdesta ehdokkaasta on korkeampi arviointi valittaessa paras henkilö ylennykseen.
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() -metodi ottaa vastaan Comparator<Employee>-vertailijan, joka käyttää Employee::getRating-metodia verratakseen työntekijöitä heidän arvosanojensa perusteella.
Kaksi Employee-oliota luodaan eri arvosanoilla. apply()-metodi valitsee työntekijän, jolla on korkein arvosana, ja tulostaa hänen nimensä.
1. Mikä on BinaryOperator<T>-funktionaalisen rajapinnan päätarkoitus?
2. Mikä on BinaryOperator<T>-rajapinnan pääasiallinen metodi?
3. Mikä rajapinta on BinaryOperator<T>:n ylärajapinta?
4. Mitä seuraava koodi tulostaa?
Kiitos palautteestasi!