Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre BinaryOperator : Combinaison de Deux Valeurs | Fondamentaux et Capacités Fonctionnelles de l'API Stream
API Stream

bookBinaryOperator : Combinaison de Deux Valeurs

Cette interface est particulièrement utile lors de la combinaison de deux valeurs du même type, comme pour effectuer des calculs mathématiques ou fusionner des données.

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

L’interface BinaryOperator<T> étend BiFunction<T, T, T>, mais contrairement à BiFunction, les deux arguments d’entrée ainsi que la valeur de retour doivent toujours être du même type T.

Son unique méthode abstraite, apply(T t1, T t2), effectue une opération sur deux arguments et retourne le résultat.

Exemple pratique

Supposons que vous disposiez d’un système de paie où il est nécessaire de déterminer lequel de deux primesannuelle ou trimestrielle — est plus élevée afin que le montant le plus important puisse être attribué à un employé.

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

Dans cet exemple, un BinaryOperator<Double> est créé en utilisant Math.max() pour comparer deux valeurs et retourner la plus grande.

Deux primes sont ensuite définies : annualBonus (prime annuelle) et quarterlyBonus (prime trimestrielle).

La méthode apply() est appelée pour déterminer la prime la plus élevée, et le résultat est affiché dans la console. Cette approche est utile lorsqu’il est nécessaire de sélectionner dynamiquement la meilleure option sans recourir à une logique conditionnelle complexe.

Méthodes statiques

En plus de sa méthode principale apply(), BinaryOperator<T> inclut plusieurs méthodes statiques utiles :

  • maxBy(Comparator<T> comparator) – retourne un BinaryOperator<T> qui sélectionne la plus grande des deux valeurs selon le Comparator<T> fourni ;
  • minBy(Comparator<T> comparator) – retourne un BinaryOperator<T> qui sélectionne la plus petite des deux valeurs selon le Comparator<T> fourni.

Exemple d'utilisation

Supposons qu'un système de gestion des employés doive déterminer lequel de deux candidats possède une note plus élevée afin de sélectionner le meilleur pour une promotion.

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

La méthode BinaryOperator.maxBy() prend un Comparator<Employee>, qui utilise Employee::getRating pour comparer les employés selon leurs notes.

Deux objets Employee sont ensuite créés avec des notes différentes. La méthode apply() sélectionne l'employé ayant la note la plus élevée et affiche son nom.

1. Quel est le but principal de l'interface fonctionnelle BinaryOperator<T> ?

2. Quelle est la méthode principale dans l'interface BinaryOperator<T> ?

3. Quelle interface est le parent de BinaryOperator<T> ?

4. Quelle sera la sortie du code suivant ?

question mark

Quel est le but principal de l'interface fonctionnelle BinaryOperator<T> ?

Select the correct answer

question mark

Quelle est la méthode principale dans l'interface BinaryOperator<T> ?

Select the correct answer

question mark

Quelle interface est le parent de BinaryOperator<T> ?

Select the correct answer

question mark

Quelle sera la sortie du code suivant ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 15

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 2.33

bookBinaryOperator : Combinaison de Deux Valeurs

Glissez pour afficher le menu

Cette interface est particulièrement utile lors de la combinaison de deux valeurs du même type, comme pour effectuer des calculs mathématiques ou fusionner des données.

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

L’interface BinaryOperator<T> étend BiFunction<T, T, T>, mais contrairement à BiFunction, les deux arguments d’entrée ainsi que la valeur de retour doivent toujours être du même type T.

Son unique méthode abstraite, apply(T t1, T t2), effectue une opération sur deux arguments et retourne le résultat.

Exemple pratique

Supposons que vous disposiez d’un système de paie où il est nécessaire de déterminer lequel de deux primesannuelle ou trimestrielle — est plus élevée afin que le montant le plus important puisse être attribué à un employé.

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

Dans cet exemple, un BinaryOperator<Double> est créé en utilisant Math.max() pour comparer deux valeurs et retourner la plus grande.

Deux primes sont ensuite définies : annualBonus (prime annuelle) et quarterlyBonus (prime trimestrielle).

La méthode apply() est appelée pour déterminer la prime la plus élevée, et le résultat est affiché dans la console. Cette approche est utile lorsqu’il est nécessaire de sélectionner dynamiquement la meilleure option sans recourir à une logique conditionnelle complexe.

Méthodes statiques

En plus de sa méthode principale apply(), BinaryOperator<T> inclut plusieurs méthodes statiques utiles :

  • maxBy(Comparator<T> comparator) – retourne un BinaryOperator<T> qui sélectionne la plus grande des deux valeurs selon le Comparator<T> fourni ;
  • minBy(Comparator<T> comparator) – retourne un BinaryOperator<T> qui sélectionne la plus petite des deux valeurs selon le Comparator<T> fourni.

Exemple d'utilisation

Supposons qu'un système de gestion des employés doive déterminer lequel de deux candidats possède une note plus élevée afin de sélectionner le meilleur pour une promotion.

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

La méthode BinaryOperator.maxBy() prend un Comparator<Employee>, qui utilise Employee::getRating pour comparer les employés selon leurs notes.

Deux objets Employee sont ensuite créés avec des notes différentes. La méthode apply() sélectionne l'employé ayant la note la plus élevée et affiche son nom.

1. Quel est le but principal de l'interface fonctionnelle BinaryOperator<T> ?

2. Quelle est la méthode principale dans l'interface BinaryOperator<T> ?

3. Quelle interface est le parent de BinaryOperator<T> ?

4. Quelle sera la sortie du code suivant ?

question mark

Quel est le but principal de l'interface fonctionnelle BinaryOperator<T> ?

Select the correct answer

question mark

Quelle est la méthode principale dans l'interface BinaryOperator<T> ?

Select the correct answer

question mark

Quelle interface est le parent de BinaryOperator<T> ?

Select the correct answer

question mark

Quelle sera la sortie du code suivant ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 15
some-alt