Predicado: Filtrado de Datos
El propósito principal de Predicate es facilitar el filtrado de datos de manera conveniente según una condición dada. Esta interfaz funcional contiene un único método abstracto:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Además, proporciona métodos predeterminados para combinar condiciones, como and(), or() y negate(), que abordaremos más adelante.
Aplicación práctica
La sintaxis de todas las interfaces funcionales sigue un patrón similar y es bastante sencilla:
Predicate<T> predicate = t -> condition;
Aquí, T representa el tipo del argumento de entrada, y condition es una expresión que devuelve true o false.
Por ejemplo, si se necesita verificar si un número es par, se puede utilizar un Predicate de la siguiente manera:
Main.java
1234567891011121314151617package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: Check if a number is even Predicate<Integer> isEven = number -> number % 2 == 0; int number = 4; if (isEven.test(number)) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }
Este código utiliza el método test() de la interfaz Predicate, que está diseñado para evaluar condiciones. Cuando se llama a test(), se ejecuta la lógica definida en la expresión lambda number -> number % 2 == 0, comprobando si el número es divisible por 2 sin residuo, lo que determina su paridad.
Aquí, Predicate se utiliza para verificar si un número es par, y el método test() aplica la condición.
Combinación de condiciones
Predicate proporciona la capacidad de combinar condiciones utilizando los métodos and(), or() y negate(). Esto permite realizar comprobaciones más complejas. A continuación, se presentan algunos ejemplos:
Condición AND
Suponga que necesita verificar si un número cumple con dos criterios: debe ser mayor que 10 y par.
Puede utilizar el método and() para esto, al igual que el operador && en Java, para asegurar que ambas condiciones devuelvan true.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is greater than 10 Predicate<Integer> isGreaterThanTen = number -> number > 10; // Condition 2: The number is even Predicate<Integer> isEven = number -> number % 2 == 0; // Combined condition: The number is greater than 10 and even Predicate<Integer> combinedCondition = isGreaterThanTen.and(isEven); int number = 12; if (combinedCondition.test(number)) { System.out.println(number + " meets both conditions."); } else { System.out.println(number + " does not meet the conditions."); } } }
El método and() combina dos condiciones. Un número debe cumplir ambos criterios para que el resultado sea true.
Condición OR
Ahora, suponga que necesita verificar si un número es menor que 5 o mayor que 15.
Puede utilizar el método or(), al igual que el operador || en Java, para asegurar que al menos una de las condiciones devuelva true.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is less than 5 Predicate<Integer> isLessThanFive = number -> number < 5; // Condition 2: The number is greater than 15 Predicate<Integer> isGreaterThanFifteen = number -> number > 15; // Combined condition: The number is less than 5 or greater than 15 Predicate<Integer> combinedCondition = isLessThanFive.or(isGreaterThanFifteen); int number = 3; if (combinedCondition.test(number)) { System.out.println(number + " meets at least one of the conditions."); } else { System.out.println(number + " does not meet any of the conditions."); } } }
El método or() verifica si un número cumple al menos una de las condiciones dadas. Esto es útil cuando basta con satisfacer solo un criterio.
Negar condición
Suponga que necesita verificar si una cadena no está vacía.
Puede utilizar el método negate(), al igual que el operador ! en Java, para invertir el resultado de una condición.
Main.java
1234567891011121314151617181920package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: The string is empty Predicate<String> isEmpty = str -> str == null || str.isEmpty(); // Condition: The string is not empty Predicate<String> isNotEmpty = isEmpty.negate(); String text = "Hello"; if (isNotEmpty.test(text)) { System.out.println("The string contains text: " + text); } else { System.out.println("The string is empty."); } } }
El método negate() invierte una condición. Si la condición original devuelve true, la versión negada devolverá false, y viceversa.
1. ¿Cuál es el propósito principal de la interfaz funcional Predicate en Java?
2. ¿Cuál será la salida del siguiente código?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you show an example of using Predicate with numbers?
How do I combine multiple Predicate conditions?
What does the test() method do in practice?
Awesome!
Completion rate improved to 2.33
Predicado: Filtrado de Datos
Desliza para mostrar el menú
El propósito principal de Predicate es facilitar el filtrado de datos de manera conveniente según una condición dada. Esta interfaz funcional contiene un único método abstracto:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Además, proporciona métodos predeterminados para combinar condiciones, como and(), or() y negate(), que abordaremos más adelante.
Aplicación práctica
La sintaxis de todas las interfaces funcionales sigue un patrón similar y es bastante sencilla:
Predicate<T> predicate = t -> condition;
Aquí, T representa el tipo del argumento de entrada, y condition es una expresión que devuelve true o false.
Por ejemplo, si se necesita verificar si un número es par, se puede utilizar un Predicate de la siguiente manera:
Main.java
1234567891011121314151617package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: Check if a number is even Predicate<Integer> isEven = number -> number % 2 == 0; int number = 4; if (isEven.test(number)) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }
Este código utiliza el método test() de la interfaz Predicate, que está diseñado para evaluar condiciones. Cuando se llama a test(), se ejecuta la lógica definida en la expresión lambda number -> number % 2 == 0, comprobando si el número es divisible por 2 sin residuo, lo que determina su paridad.
Aquí, Predicate se utiliza para verificar si un número es par, y el método test() aplica la condición.
Combinación de condiciones
Predicate proporciona la capacidad de combinar condiciones utilizando los métodos and(), or() y negate(). Esto permite realizar comprobaciones más complejas. A continuación, se presentan algunos ejemplos:
Condición AND
Suponga que necesita verificar si un número cumple con dos criterios: debe ser mayor que 10 y par.
Puede utilizar el método and() para esto, al igual que el operador && en Java, para asegurar que ambas condiciones devuelvan true.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is greater than 10 Predicate<Integer> isGreaterThanTen = number -> number > 10; // Condition 2: The number is even Predicate<Integer> isEven = number -> number % 2 == 0; // Combined condition: The number is greater than 10 and even Predicate<Integer> combinedCondition = isGreaterThanTen.and(isEven); int number = 12; if (combinedCondition.test(number)) { System.out.println(number + " meets both conditions."); } else { System.out.println(number + " does not meet the conditions."); } } }
El método and() combina dos condiciones. Un número debe cumplir ambos criterios para que el resultado sea true.
Condición OR
Ahora, suponga que necesita verificar si un número es menor que 5 o mayor que 15.
Puede utilizar el método or(), al igual que el operador || en Java, para asegurar que al menos una de las condiciones devuelva true.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is less than 5 Predicate<Integer> isLessThanFive = number -> number < 5; // Condition 2: The number is greater than 15 Predicate<Integer> isGreaterThanFifteen = number -> number > 15; // Combined condition: The number is less than 5 or greater than 15 Predicate<Integer> combinedCondition = isLessThanFive.or(isGreaterThanFifteen); int number = 3; if (combinedCondition.test(number)) { System.out.println(number + " meets at least one of the conditions."); } else { System.out.println(number + " does not meet any of the conditions."); } } }
El método or() verifica si un número cumple al menos una de las condiciones dadas. Esto es útil cuando basta con satisfacer solo un criterio.
Negar condición
Suponga que necesita verificar si una cadena no está vacía.
Puede utilizar el método negate(), al igual que el operador ! en Java, para invertir el resultado de una condición.
Main.java
1234567891011121314151617181920package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: The string is empty Predicate<String> isEmpty = str -> str == null || str.isEmpty(); // Condition: The string is not empty Predicate<String> isNotEmpty = isEmpty.negate(); String text = "Hello"; if (isNotEmpty.test(text)) { System.out.println("The string contains text: " + text); } else { System.out.println("The string is empty."); } } }
El método negate() invierte una condición. Si la condición original devuelve true, la versión negada devolverá false, y viceversa.
1. ¿Cuál es el propósito principal de la interfaz funcional Predicate en Java?
2. ¿Cuál será la salida del siguiente código?
¡Gracias por tus comentarios!