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

  1. encontrar todas as crianças nascidas após uma determinada data
  2. Pizzas ordenadas um tempo específico
  3. 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

  1. eles movem suas condições (às vezes lógica de negócios) para um lugar central. Isto ajuda a testá-los separadamente.
  2. qualquer alteração não necessita de ser duplicada em vários locais. O predicado Java melhora a manutenção do Código.
  3. o código, por exemplo, “filter employees(employees, isAdultFemale())” é muito legível do que escrever um bloco if-else.