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