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?

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