Predicado: Filtragem de Dados
O principal objetivo de Predicate é facilitar a filtragem de dados de forma conveniente com base em uma condição fornecida. Esta interface funcional contém um único método abstrato:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Além disso, fornece métodos padrão para combinar condições, como and(), or() e negate(), que serão abordados posteriormente.
Aplicação Prática
A sintaxe para todas as interfaces funcionais segue um padrão semelhante e é bastante simples:
Predicate<T> predicate = t -> condition;
Aqui, T representa o tipo do argumento de entrada, e condition é uma expressão que retorna true ou false.
Suponha que seja necessário verificar se um determinado número é par. É possível utilizar um Predicate para isso da seguinte forma:
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 o método test() da interface Predicate, que é projetada para avaliar condições. Quando test() é chamado, ele executa a lógica definida na expressão lambda number -> number % 2 == 0, verificando se o número é divisível por 2 sem resto, o que determina se é par.
Aqui, Predicate é utilizado para verificar se um determinado número é par, e o método test() aplica a condição.
Combinando Condições
Predicate oferece a capacidade de combinar condições utilizando os métodos and(), or() e negate(). Isso possibilita verificações mais complexas. Veja alguns exemplos:
Condição AND
Suponha que seja necessário verificar se um número atende a dois critérios: deve ser maior que 10 e par.
É possível utilizar o método and() para isso, assim como o operador && em Java, garantindo que ambas as condições retornem 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."); } } }
O método and() combina duas condições. Um número deve satisfazer ambos os critérios para que o resultado seja true.
Condição OR
Agora, considere a necessidade de verificar se um número é menor que 5 ou maior que 15.
É possível utilizar o método or(), assim como o operador || em Java, para garantir que pelo menos uma das condições retorne 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."); } } }
O método or() verifica se um número atende a pelo menos uma das condições fornecidas. Este recurso é útil quando satisfazer apenas um critério é suficiente.
NEGATE Condição
Suponha que seja necessário verificar se uma string não está vazia.
É possível utilizar o método negate(), assim como o operador ! em Java, para inverter o resultado de uma condição.
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."); } } }
O método negate() inverte uma condição. Se a condição original retornar true, a versão negada retornará false, e vice-versa.
1. Qual é o principal objetivo da interface funcional Predicate em Java?
2. Qual será a saída do seguinte código?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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: Filtragem de Dados
Deslize para mostrar o menu
O principal objetivo de Predicate é facilitar a filtragem de dados de forma conveniente com base em uma condição fornecida. Esta interface funcional contém um único método abstrato:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Além disso, fornece métodos padrão para combinar condições, como and(), or() e negate(), que serão abordados posteriormente.
Aplicação Prática
A sintaxe para todas as interfaces funcionais segue um padrão semelhante e é bastante simples:
Predicate<T> predicate = t -> condition;
Aqui, T representa o tipo do argumento de entrada, e condition é uma expressão que retorna true ou false.
Suponha que seja necessário verificar se um determinado número é par. É possível utilizar um Predicate para isso da seguinte forma:
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 o método test() da interface Predicate, que é projetada para avaliar condições. Quando test() é chamado, ele executa a lógica definida na expressão lambda number -> number % 2 == 0, verificando se o número é divisível por 2 sem resto, o que determina se é par.
Aqui, Predicate é utilizado para verificar se um determinado número é par, e o método test() aplica a condição.
Combinando Condições
Predicate oferece a capacidade de combinar condições utilizando os métodos and(), or() e negate(). Isso possibilita verificações mais complexas. Veja alguns exemplos:
Condição AND
Suponha que seja necessário verificar se um número atende a dois critérios: deve ser maior que 10 e par.
É possível utilizar o método and() para isso, assim como o operador && em Java, garantindo que ambas as condições retornem 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."); } } }
O método and() combina duas condições. Um número deve satisfazer ambos os critérios para que o resultado seja true.
Condição OR
Agora, considere a necessidade de verificar se um número é menor que 5 ou maior que 15.
É possível utilizar o método or(), assim como o operador || em Java, para garantir que pelo menos uma das condições retorne 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."); } } }
O método or() verifica se um número atende a pelo menos uma das condições fornecidas. Este recurso é útil quando satisfazer apenas um critério é suficiente.
NEGATE Condição
Suponha que seja necessário verificar se uma string não está vazia.
É possível utilizar o método negate(), assim como o operador ! em Java, para inverter o resultado de uma condição.
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."); } } }
O método negate() inverte uma condição. Se a condição original retornar true, a versão negada retornará false, e vice-versa.
1. Qual é o principal objetivo da interface funcional Predicate em Java?
2. Qual será a saída do seguinte código?
Obrigado pelo seu feedback!