Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Binaryoperator: Combinazione di Due Valori | Fondamenti e Capacità Funzionali dello Stream API
Stream API

bookBinaryoperator: Combinazione di Due Valori

Questa interfaccia è particolarmente utile quando si devono combinare due valori dello stesso tipo, ad esempio per eseguire calcoli matematici o unire dati.

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

L'interfaccia BinaryOperator<T> estende BiFunction<T, T, T>, ma a differenza di BiFunction, entrambi gli argomenti di input e il valore di ritorno devono sempre essere dello stesso tipo T.

Il suo unico metodo astratto, apply(T t1, T t2), esegue un'operazione su due argomenti e restituisce il risultato.

Esempio pratico

Si consideri un sistema di gestione stipendi in cui è necessario determinare quale tra due bonusannuale o trimestrale — sia maggiore in modo che l'importo più elevato possa essere assegnato a un dipendente.

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

In questo esempio, si crea un BinaryOperator<Double> che utilizza Math.max() per confrontare due valori e restituire quello maggiore.

Si definiscono quindi due bonus: annualBonus (bonus annuale) e quarterlyBonus (bonus trimestrale).

Il metodo apply() viene chiamato per determinare il bonus più alto e il risultato viene stampato sulla console. Questo approccio è utile quando è necessario selezionare dinamicamente l'opzione migliore senza una logica condizionale complessa.

Metodi Statici

Oltre al suo metodo principale apply(), BinaryOperator<T> include diversi utili metodi statici:

  • maxBy(Comparator<T> comparator) – restituisce un BinaryOperator<T> che seleziona il maggiore tra due valori in base al Comparator<T> fornito;
  • minBy(Comparator<T> comparator) – restituisce un BinaryOperator<T> che seleziona il minore tra due valori in base al Comparator<T> fornito.

Esempio di Utilizzo

Supponiamo di avere un sistema di gestione dei dipendenti in cui è necessario determinare quale tra due candidati abbia una valutazione più alta al fine di selezionare il migliore per una promozione.

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

Il metodo BinaryOperator.maxBy() accetta un Comparator<Employee>, che utilizza Employee::getRating per confrontare i dipendenti in base alle loro valutazioni.

Vengono quindi creati due oggetti Employee con valutazioni differenti. Il metodo apply() seleziona il dipendente con la valutazione più alta e stampa il suo nome.

1. Qual è lo scopo principale dell'interfaccia funzionale BinaryOperator<T>?

2. Qual è il metodo principale nell'interfaccia BinaryOperator<T>?

3. Quale interfaccia è la genitrice di BinaryOperator<T>?

4. Quale sarà l'output del seguente codice?

question mark

Qual è lo scopo principale dell'interfaccia funzionale BinaryOperator<T>?

Select the correct answer

question mark

Qual è il metodo principale nell'interfaccia BinaryOperator<T>?

Select the correct answer

question mark

Quale interfaccia è la genitrice di BinaryOperator<T>?

Select the correct answer

question mark

Quale sarà l'output del seguente codice?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 15

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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: Combinazione di Due Valori

Scorri per mostrare il menu

Questa interfaccia è particolarmente utile quando si devono combinare due valori dello stesso tipo, ad esempio per eseguire calcoli matematici o unire dati.

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

L'interfaccia BinaryOperator<T> estende BiFunction<T, T, T>, ma a differenza di BiFunction, entrambi gli argomenti di input e il valore di ritorno devono sempre essere dello stesso tipo T.

Il suo unico metodo astratto, apply(T t1, T t2), esegue un'operazione su due argomenti e restituisce il risultato.

Esempio pratico

Si consideri un sistema di gestione stipendi in cui è necessario determinare quale tra due bonusannuale o trimestrale — sia maggiore in modo che l'importo più elevato possa essere assegnato a un dipendente.

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

In questo esempio, si crea un BinaryOperator<Double> che utilizza Math.max() per confrontare due valori e restituire quello maggiore.

Si definiscono quindi due bonus: annualBonus (bonus annuale) e quarterlyBonus (bonus trimestrale).

Il metodo apply() viene chiamato per determinare il bonus più alto e il risultato viene stampato sulla console. Questo approccio è utile quando è necessario selezionare dinamicamente l'opzione migliore senza una logica condizionale complessa.

Metodi Statici

Oltre al suo metodo principale apply(), BinaryOperator<T> include diversi utili metodi statici:

  • maxBy(Comparator<T> comparator) – restituisce un BinaryOperator<T> che seleziona il maggiore tra due valori in base al Comparator<T> fornito;
  • minBy(Comparator<T> comparator) – restituisce un BinaryOperator<T> che seleziona il minore tra due valori in base al Comparator<T> fornito.

Esempio di Utilizzo

Supponiamo di avere un sistema di gestione dei dipendenti in cui è necessario determinare quale tra due candidati abbia una valutazione più alta al fine di selezionare il migliore per una promozione.

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

Il metodo BinaryOperator.maxBy() accetta un Comparator<Employee>, che utilizza Employee::getRating per confrontare i dipendenti in base alle loro valutazioni.

Vengono quindi creati due oggetti Employee con valutazioni differenti. Il metodo apply() seleziona il dipendente con la valutazione più alta e stampa il suo nome.

1. Qual è lo scopo principale dell'interfaccia funzionale BinaryOperator<T>?

2. Qual è il metodo principale nell'interfaccia BinaryOperator<T>?

3. Quale interfaccia è la genitrice di BinaryOperator<T>?

4. Quale sarà l'output del seguente codice?

question mark

Qual è lo scopo principale dell'interfaccia funzionale BinaryOperator<T>?

Select the correct answer

question mark

Qual è il metodo principale nell'interfaccia BinaryOperator<T>?

Select the correct answer

question mark

Quale interfaccia è la genitrice di BinaryOperator<T>?

Select the correct answer

question mark

Quale sarà l'output del seguente codice?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 15
some-alt