Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Binaryoperator: Kombinering Af To Værdier | Grundlæggende og Funktionelle Kapaciteter af Stream API
Stream API

bookBinaryoperator: 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

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 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 en BinaryOperator<T>, der vælger den største af to værdier baseret på den angivne Comparator<T>;
  • minBy(Comparator<T> comparator) – returnerer en BinaryOperator<T>, der vælger den mindste af to værdier baseret på den angivne Comparator<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

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

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?

question mark

Hvad er hovedformålet med det funktionelle interface BinaryOperator<T>?

Select the correct answer

question mark

Hvad er den primære metode i interfacet BinaryOperator<T>?

Select the correct answer

question mark

Hvilket interface er forælder til BinaryOperator<T>?

Select the correct answer

question mark

Hvad vil følgende kode udskrive?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 15

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

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 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 en BinaryOperator<T>, der vælger den største af to værdier baseret på den angivne Comparator<T>;
  • minBy(Comparator<T> comparator) – returnerer en BinaryOperator<T>, der vælger den mindste af to værdier baseret på den angivne Comparator<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

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

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?

question mark

Hvad er hovedformålet med det funktionelle interface BinaryOperator<T>?

Select the correct answer

question mark

Hvad er den primære metode i interfacet BinaryOperator<T>?

Select the correct answer

question mark

Hvilket interface er forælder til BinaryOperator<T>?

Select the correct answer

question mark

Hvad vil følgende kode udskrive?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 15
some-alt