Ejemplo de Predicado de Java-Filtro de Predicado
En matemáticas, un predicado se entiende comúnmente como una función de valor booleano 'P: X? {true, false}'
, llamada predicado en X. Informalmente, un fuerte. Se puede considerar como un operador o una función que devuelve un valor que es true
o false
.
Uso de predicados de Java 8
En Java 8, Predicate es una interfaz funcional y, por lo tanto, se puede usar como destino de asignación para una expresión o referencia de método lambda. Entonces, ¿dónde crees que podemos usar estas funciones de retorno verdadero/falso en la programación diaria? Diré que puede usar predicados en cualquier lugar donde necesite evaluar una condición en un grupo/colección de objetos similares, de modo que la evaluación pueda resultar en verdadero o falso.
Por ejemplo, puede usar prdicates en estos casos de uso en tiempo real
- Buscar a todos los niños nacidos después de una fecha determinada
- Pizzas ordenadas a una hora específica
- Empleados mayores de cierta edad y así sucesivamente..
Clase de predicado Java
Así que los predicados java parecen ser algo interesante. Vayamos más profundo.
Como he dicho, Predicate
es una interfaz funcional. Significa que podemos pasar expresiones lambda donde se espera un predicado. Por ejemplo, uno de estos métodos es el método filter()
de la interfaz de flujo.
Podemos asumir un flujo como un mecanismo para crear una secuencia de elementos que soportan operaciones agregadas secuenciales y paralelas. Significa que en cualquier momento podemos recopilar y realizar alguna operación de todos los elementos presentes en la secuencia en una sola llamada.
Por lo tanto, esencialmente podemos usar transmisión y predicado para–
- primero filtra ciertos elementos de un grupo, y
- luego realiza alguna operación en elementos filtrados.
Usando Predicado en una colección
Para demostrar, tenemos una clase Employee
de la siguiente manera:
1. Todos los empleados que son hombres y tienen más de 21
public static Predicate<Employee> isAdultMale() { return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");}
2. Todos los empleados que son mujeres y tienen más de 18
public static Predicate<Employee> isAdultFemale() { return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");}
3. Todos los empleados cuya edad es superior a una edad determinada
public static Predicate<Employee> isAgeMoreThan(Integer age) { return p -> p.getAge() > age;}
Puede crear más de ellos cuando sea necesario. Hasta ahora todo bien. Utilizando métodos anteriores, he incluido más de 3 métodos en los indicadores de empleo.java:
Verá que he creado otro método de utilidad filterEmployees () para mostrar el filtro de predicados de java. Es básicamente para hacer que el código sea limpio y menos repetitivo. También puede escribir más de un predicado para hacer una cadena de predicados, como hacemos en patrón de constructor.
Por lo tanto, en esta función pasamos la lista de employees
y pasamos un predicado, luego esta función devolverá una nueva colección de employees
que satisfaga la condición mencionada en el predicado de parámetros.
Los predicados son realmente una muy buena adición en Java 8 y voy a usarlo cada vez que tenga la oportunidad.
Pensamientos finales sobre Predicados en Java 8
- Trasladan sus condiciones (a veces lógica de negocios) a un lugar central. Esto ayuda en las pruebas unitarias por separado.
- No es necesario duplicar ningún cambio en varios lugares. El predicado Java mejora el mantenimiento del código.
- El código, por ejemplo, «filterEmployees (employees, isAdultFemale ())» es mucho más legible que escribir un bloque if-else.