Introdução ao Predicate
O Predicate
O que é uma Interface Funcional?
Uma interface funcional é uma interface que possui exatamente um método abstrato. O Predicatetest(T t)
, que retorna um booleano. Isso o torna ideal para ser utilizado como uma expressão lambda, facilitando a programação funcional em Java.
Criando um Predicate Simples
Vamos começar com um exemplo simples de um Predicate que verifica se um número é par:
Predicate<Integer> isEven = number -> number % 2 == 0;
Esse código define um Predicate que retorna verdadeiro se o número fornecido for par. A utilização de expressões lambda torna o código mais conciso e legível.
Usando Predicate com Coleções
O Predicatefilter()
da Stream API:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream().filter(isEven).collect(Collectors.toList());
Neste exemplo, estamos criando uma lista de números e, em seguida, filtrando apenas aqueles que são pares usando o Predicate definido anteriormente. A lista resultante, evenNumbers
, conterá apenas os números 2, 4 e 6.
Combinando Predicates
Uma das grandes vantagens do Predicateand()
, or()
e negate()
para criar condições compostas. Por exemplo, vamos criar um Predicate que verifica se um número é par e maior que 2:
Predicate<Integer> isEvenAndGreaterThanTwo = isEven.and(number -> number > 2);
Esse Predicate resultará em verdadeiro apenas para números que são pares e maiores que 2.
Exemplo Completo
Vamos juntar tudo em um exemplo prático onde filtramos uma lista de números, aplicando múltiplos Predicates:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Predicate<Integer> isEven = number -> number % 2 == 0;
Predicate<Integer> isGreaterThanTwo = number -> number > 2;
List<Integer> filteredNumbers = numbers.stream()
.filter(isEven.and(isGreaterThanTwo))
.collect(Collectors.toList());
Nesse caso, filteredNumbers
conterá os números 4 e 6, pois são os únicos que atendem a ambas as condições.
Conclusão
O uso do Predicate
Considerações Finais
Com a crescente adoção da programação funcional em Java, entender como usar Predicate
Entenda a Importância do Predicate na Programação Funcional em Java
O Predicate
Algumas aplicações:
- Filtragem de dados em listas
- Validação de entradas em formulários
- Aplicação de regras de negócio em dados
- Processamento de streams de dados
Dicas para quem está começando
- Comece a usar expressões lambda para simplificar seu código.
- Experimente combinar diferentes Predicates para criar condições complexas.
- Pratique a filtragem em coleções com exemplos do mundo real.
- Considere a legibilidade do código ao usar Predicates.
Contribuições de Renata Oliveira