Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Binaryoperator: Kombinera Två Värden | Grunder och Funktionella Möjligheter med Stream API
Stream API

bookBinaryoperator: Kombinera Två Värden

Detta gränssnitt är särskilt användbart vid kombinering av två värden av samma typ, såsom vid matematiska beräkningar eller sammanfogning av data.

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
    T apply(T t1, T t2);
}

Gränssnittet BinaryOperator<T> utökar BiFunction<T, T, T>, men till skillnad från BiFunction måste både inmatningsargumenten och returvärdet alltid vara av samma typ T.

Dess enda abstrakta metod, apply(T t1, T t2), utför en operation på två argument och returnerar resultatet.

Praktiskt exempel

Anta att du har ett lönesystem där du behöver avgöra vilken av två bonusarårlig eller kvartalsvis — som är högre så att det större beloppet kan tilldelas en anställd.

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); } }

I detta exempel skapar du en BinaryOperator<Double> som använder Math.max() för att jämföra två värden och returnera det större.

Du definierar sedan två bonusar: annualBonus (årlig bonus) och quarterlyBonus (kvartalsbonus).

Metoden apply() anropas för att avgöra vilken bonus som är högst, och resultatet skrivs ut till konsolen. Denna metod är användbar när du behöver välja det bästa alternativet dynamiskt utan komplex villkorslogik.

Statisk metoder

Förutom sin primära apply() metod innehåller BinaryOperator<T> flera användbara statiska metoder:

  • maxBy(Comparator<T> comparator) – returnerar en BinaryOperator<T> som väljer det större av två värden baserat på den angivna Comparator<T>;
  • minBy(Comparator<T> comparator) – returnerar en BinaryOperator<T> som väljer det mindre av två värden baserat på den angivna Comparator<T>.

Exempel på användning

Anta att du har ett personalhanteringssystem där du behöver avgöra vilken av två kandidater som har ett högre betyg för att välja den bästa för en befordran.

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() metoden tar en Comparator<Employee>, som använder Employee::getRating för att jämföra anställda efter deras betyg.

Två Employee-objekt skapas sedan med olika betyg. apply()-metoden väljer den anställde med högst betyg och skriver ut deras namn.

1. Vad är huvudsyftet med det funktionella gränssnittet BinaryOperator<T>?

2. Vilken är huvudmetoden i gränssnittet BinaryOperator<T>?

3. Vilket gränssnitt är förälder till BinaryOperator<T>?

4. Vad kommer följande kod att skriva ut?

question mark

Vad är huvudsyftet med det funktionella gränssnittet BinaryOperator<T>?

Select the correct answer

question mark

Vilken är huvudmetoden i gränssnittet BinaryOperator<T>?

Select the correct answer

question mark

Vilket gränssnitt är förälder till BinaryOperator<T>?

Select the correct answer

question mark

Vad kommer följande kod att skriva ut?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 15

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 2.33

bookBinaryoperator: Kombinera Två Värden

Svep för att visa menyn

Detta gränssnitt är särskilt användbart vid kombinering av två värden av samma typ, såsom vid matematiska beräkningar eller sammanfogning av data.

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T, T, T> {
    T apply(T t1, T t2);
}

Gränssnittet BinaryOperator<T> utökar BiFunction<T, T, T>, men till skillnad från BiFunction måste både inmatningsargumenten och returvärdet alltid vara av samma typ T.

Dess enda abstrakta metod, apply(T t1, T t2), utför en operation på två argument och returnerar resultatet.

Praktiskt exempel

Anta att du har ett lönesystem där du behöver avgöra vilken av två bonusarårlig eller kvartalsvis — som är högre så att det större beloppet kan tilldelas en anställd.

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); } }

I detta exempel skapar du en BinaryOperator<Double> som använder Math.max() för att jämföra två värden och returnera det större.

Du definierar sedan två bonusar: annualBonus (årlig bonus) och quarterlyBonus (kvartalsbonus).

Metoden apply() anropas för att avgöra vilken bonus som är högst, och resultatet skrivs ut till konsolen. Denna metod är användbar när du behöver välja det bästa alternativet dynamiskt utan komplex villkorslogik.

Statisk metoder

Förutom sin primära apply() metod innehåller BinaryOperator<T> flera användbara statiska metoder:

  • maxBy(Comparator<T> comparator) – returnerar en BinaryOperator<T> som väljer det större av två värden baserat på den angivna Comparator<T>;
  • minBy(Comparator<T> comparator) – returnerar en BinaryOperator<T> som väljer det mindre av två värden baserat på den angivna Comparator<T>.

Exempel på användning

Anta att du har ett personalhanteringssystem där du behöver avgöra vilken av två kandidater som har ett högre betyg för att välja den bästa för en befordran.

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() metoden tar en Comparator<Employee>, som använder Employee::getRating för att jämföra anställda efter deras betyg.

Två Employee-objekt skapas sedan med olika betyg. apply()-metoden väljer den anställde med högst betyg och skriver ut deras namn.

1. Vad är huvudsyftet med det funktionella gränssnittet BinaryOperator<T>?

2. Vilken är huvudmetoden i gränssnittet BinaryOperator<T>?

3. Vilket gränssnitt är förälder till BinaryOperator<T>?

4. Vad kommer följande kod att skriva ut?

question mark

Vad är huvudsyftet med det funktionella gränssnittet BinaryOperator<T>?

Select the correct answer

question mark

Vilken är huvudmetoden i gränssnittet BinaryOperator<T>?

Select the correct answer

question mark

Vilket gränssnitt är förälder till BinaryOperator<T>?

Select the correct answer

question mark

Vad kommer följande kod att skriva ut?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 15
some-alt