Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Binaryoperator: Combinación de Dos Valores | Fundamentos y Capacidades Funcionales de Stream API
Stream API

bookBinaryoperator: Combinación de Dos Valores

Esta interfaz es especialmente útil al combinar dos valores del mismo tipo, como al realizar cálculos matemáticos o fusionar datos.

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

La interfaz BinaryOperator<T> extiende a BiFunction<T, T, T>, pero a diferencia de BiFunction, tanto los argumentos de entrada como el valor de retorno siempre deben ser del mismo tipo T.

Su único método abstracto, apply(T t1, T t2), realiza una operación sobre dos argumentos y devuelve el resultado.

Ejemplo práctico

Suponga que tiene un sistema de nómina donde necesita determinar cuál de dos bonificacionesanual o trimestral — es mayor para que el monto más alto pueda ser otorgado a un empleado.

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

En este ejemplo, se crea un BinaryOperator<Double> que utiliza Math.max() para comparar dos valores y devolver el mayor.

Luego se definen dos bonificaciones: annualBonus (bonificación anual) y quarterlyBonus (bonificación trimestral).

Se llama al método apply() para determinar la bonificación más alta, y el resultado se imprime en la consola. Este enfoque es útil cuando se necesita seleccionar dinámicamente la mejor opción sin lógica condicional compleja.

Métodos Estáticos

Además de su método principal apply(), BinaryOperator<T> incluye varios métodos estáticos útiles:

  • maxBy(Comparator<T> comparator) – devuelve un BinaryOperator<T> que selecciona el mayor de dos valores según el Comparator<T> proporcionado;
  • minBy(Comparator<T> comparator) – devuelve un BinaryOperator<T> que selecciona el menor de dos valores según el Comparator<T> proporcionado.

Ejemplo de Uso

Suponga que tiene un sistema de gestión de empleados donde necesita determinar cuál de dos candidatos tiene una calificación más alta para seleccionar al mejor para una promoción.

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

El método BinaryOperator.maxBy() recibe un Comparator<Employee>, que utiliza Employee::getRating para comparar empleados por sus calificaciones.

Luego se crean dos objetos Employee con diferentes calificaciones. El método apply() selecciona al empleado con la calificación más alta y muestra su nombre.

1. ¿Cuál es el propósito principal de la interfaz funcional BinaryOperator<T>?

2. ¿Cuál es el método principal en la interfaz BinaryOperator<T>?

3. ¿Qué interfaz es la madre de BinaryOperator<T>?

4. ¿Qué mostrará la siguiente salida de código?

question mark

¿Cuál es el propósito principal de la interfaz funcional BinaryOperator<T>?

Select the correct answer

question mark

¿Cuál es el método principal en la interfaz BinaryOperator<T>?

Select the correct answer

question mark

¿Qué interfaz es la madre de BinaryOperator<T>?

Select the correct answer

question mark

¿Qué mostrará la siguiente salida de código?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 15

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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: Combinación de Dos Valores

Desliza para mostrar el menú

Esta interfaz es especialmente útil al combinar dos valores del mismo tipo, como al realizar cálculos matemáticos o fusionar datos.

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

La interfaz BinaryOperator<T> extiende a BiFunction<T, T, T>, pero a diferencia de BiFunction, tanto los argumentos de entrada como el valor de retorno siempre deben ser del mismo tipo T.

Su único método abstracto, apply(T t1, T t2), realiza una operación sobre dos argumentos y devuelve el resultado.

Ejemplo práctico

Suponga que tiene un sistema de nómina donde necesita determinar cuál de dos bonificacionesanual o trimestral — es mayor para que el monto más alto pueda ser otorgado a un empleado.

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

En este ejemplo, se crea un BinaryOperator<Double> que utiliza Math.max() para comparar dos valores y devolver el mayor.

Luego se definen dos bonificaciones: annualBonus (bonificación anual) y quarterlyBonus (bonificación trimestral).

Se llama al método apply() para determinar la bonificación más alta, y el resultado se imprime en la consola. Este enfoque es útil cuando se necesita seleccionar dinámicamente la mejor opción sin lógica condicional compleja.

Métodos Estáticos

Además de su método principal apply(), BinaryOperator<T> incluye varios métodos estáticos útiles:

  • maxBy(Comparator<T> comparator) – devuelve un BinaryOperator<T> que selecciona el mayor de dos valores según el Comparator<T> proporcionado;
  • minBy(Comparator<T> comparator) – devuelve un BinaryOperator<T> que selecciona el menor de dos valores según el Comparator<T> proporcionado.

Ejemplo de Uso

Suponga que tiene un sistema de gestión de empleados donde necesita determinar cuál de dos candidatos tiene una calificación más alta para seleccionar al mejor para una promoción.

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

El método BinaryOperator.maxBy() recibe un Comparator<Employee>, que utiliza Employee::getRating para comparar empleados por sus calificaciones.

Luego se crean dos objetos Employee con diferentes calificaciones. El método apply() selecciona al empleado con la calificación más alta y muestra su nombre.

1. ¿Cuál es el propósito principal de la interfaz funcional BinaryOperator<T>?

2. ¿Cuál es el método principal en la interfaz BinaryOperator<T>?

3. ¿Qué interfaz es la madre de BinaryOperator<T>?

4. ¿Qué mostrará la siguiente salida de código?

question mark

¿Cuál es el propósito principal de la interfaz funcional BinaryOperator<T>?

Select the correct answer

question mark

¿Cuál es el método principal en la interfaz BinaryOperator<T>?

Select the correct answer

question mark

¿Qué interfaz es la madre de BinaryOperator<T>?

Select the correct answer

question mark

¿Qué mostrará la siguiente salida de código?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 15
some-alt