Java Predicate Example-Predicate Filter
In mathematics, a predicate is commonly understood to be a boolean-valued function 'P: X? {true, false}'
, called the predicate on X. Informally, a strong. Pode ser pensado como um operador ou função que retorna um valor que é ou true
ou false
.
Java 8 Predicates Usage
In Java 8, Predicate is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference. Então, onde você acha que podemos usar essas funções de retorno verdadeiro/falso no dia a dia de programação? Eu direi que você pode usar predicados em qualquer lugar onde você precisa avaliar uma condição no grupo / coleção de objetos semelhantes, de modo que a avaliação pode resultar em verdadeiro ou falso.Por exemplo, pode utilizar prdicatos nestes casos de uso em tempo real
- encontrar todas as crianças nascidas após uma determinada data
- Pizzas ordenadas um tempo específico
- empregados com mais de uma determinada idade e assim por diante..
Java Predicate Class
so java predicates seems to be interesting thing. Vamos mais fundo.
como eu disse, Predicate
é uma interface funcional. Significa que podemos passar expressões lambda onde o predicado é esperado. Por exemplo, um desses métodos é filter()
método da interface Stream.
podemos assumir um fluxo como um mecanismo para criar uma sequência de elementos suportando operações agregadas sequenciais e paralelas. Isso significa que podemos a qualquer momento coletar e realizar alguma operação de todos os elementos presentes no fluxo em uma única chamada. Assim, essencialmente podemos usar o fluxo e predicado para–
- primeiro filtrar certos elementos de um grupo, e
- em seguida, realizar alguma operação em elementos filtrados.
usando predicado em uma coleção
para demonstrar, temos uma classe Employee
como abaixo:
1. Todos os empregados que são homens e idade mais de 21
public static Predicate<Employee> isAdultMale() { return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");}
2. Todos os empregados que são mulheres e idade mais de 18
public static Predicate<Employee> isAdultFemale() { return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");}
3. Todos os trabalhadores cuja idade seja superior a uma determinada idade
public static Predicate<Employee> isAgeMoreThan(Integer age) { return p -> p.getAge() > age;}
pode construir mais como uma, quando necessário. Até agora tudo bem. Muito utilizando métodos acima incluí 3 métodos em predicados de emprego.java:
você vê que eu criei outro método utilitário de filtradores () para mostrar o filtro de predicados java. É basicamente para tornar o código limpo e menos repetitivo. Você também pode escrever mais de um predicados para fazer cadeia de predicados, como fazemos no padrão builder.
assim, nesta função passamos a lista de employees
e passamos um predicado, então esta função retornará uma nova coleção de employees
satisfazendo a condição mencionada no predicado parâmetro.
predicados são realmente muito boa adição em Java 8 e eu vou usá-lo sempre que eu vou ter chance.Pensamentos finais sobre predicados em Java 8
- eles movem suas condições (às vezes lógica de negócios) para um lugar central. Isto ajuda a testá-los separadamente.
- qualquer alteração não necessita de ser duplicada em vários locais. O predicado Java melhora a manutenção do Código.
- o código, por exemplo, “filter employees(employees, isAdultFemale())” é muito legível do que escrever um bloco if-else.