Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Binaryoperator: Kahden Arvon Yhdistäminen | Stream API:n Perusteet ja Toiminnalliset Ominaisuudet
Stream API

bookBinaryoperator: 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 bonuksestavuosittainen vai kvartaaleittain maksettava — on suurempi, jotta suurempi summa voidaan myöntää työntekijälle.

Main.java

Main.java

copy
123456789101112131415
package 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) – palauttaa BinaryOperator<T>, joka valitsee kahdesta arvosta suuremman annetun Comparator<T>-vertailijan perusteella;
  • minBy(Comparator<T> comparator) – palauttaa BinaryOperator<T>, joka valitsee kahdesta arvosta pienemmän annetun Comparator<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

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435
package 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?

question mark

Mikä on BinaryOperator<T>-funktionaalisen rajapinnan päätarkoitus?

Select the correct answer

question mark

Mikä on BinaryOperator<T>-rajapinnan pääasiallinen metodi?

Select the correct answer

question mark

Mikä rajapinta on BinaryOperator<T>:n ylärajapinta?

Select the correct answer

question mark

Mitä seuraava koodi tulostaa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 15

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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

bookBinaryoperator: 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 bonuksestavuosittainen vai kvartaaleittain maksettava — on suurempi, jotta suurempi summa voidaan myöntää työntekijälle.

Main.java

Main.java

copy
123456789101112131415
package 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) – palauttaa BinaryOperator<T>, joka valitsee kahdesta arvosta suuremman annetun Comparator<T>-vertailijan perusteella;
  • minBy(Comparator<T> comparator) – palauttaa BinaryOperator<T>, joka valitsee kahdesta arvosta pienemmän annetun Comparator<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

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435
package 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?

question mark

Mikä on BinaryOperator<T>-funktionaalisen rajapinnan päätarkoitus?

Select the correct answer

question mark

Mikä on BinaryOperator<T>-rajapinnan pääasiallinen metodi?

Select the correct answer

question mark

Mikä rajapinta on BinaryOperator<T>:n ylärajapinta?

Select the correct answer

question mark

Mitä seuraava koodi tulostaa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 15
some-alt