BinaryOperator : 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 primes — annuelle ou trimestrielle — est plus élevée afin que le montant le plus important puisse être attribué à un employé.
Main.java
123456789101112131415package 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 unBinaryOperator<T>qui sélectionne la plus grande des deux valeurs selon leComparator<T>fourni ;minBy(Comparator<T> comparator)– retourne unBinaryOperator<T>qui sélectionne la plus petite des deux valeurs selon leComparator<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
1234567891011121314151617181920212223242526272829303132333435package 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 ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
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
BinaryOperator : 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 primes — annuelle ou trimestrielle — est plus élevée afin que le montant le plus important puisse être attribué à un employé.
Main.java
123456789101112131415package 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 unBinaryOperator<T>qui sélectionne la plus grande des deux valeurs selon leComparator<T>fourni ;minBy(Comparator<T> comparator)– retourne unBinaryOperator<T>qui sélectionne la plus petite des deux valeurs selon leComparator<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
1234567891011121314151617181920212223242526272829303132333435package 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 ?
Merci pour vos commentaires !