Esempio di predicato Java-Filtro predicato

In matematica, un predicato è comunemente inteso come una funzione con valore booleano 'P: X? {true, false}', chiamato predicato su X. Informalmente, un forte. Può essere pensato come un operatore o una funzione che restituisce un valore che è true o false.

Utilizzo dei predicati Java 8

In Java 8, Predicato è un’interfaccia funzionale e può quindi essere utilizzato come destinazione di assegnazione per un’espressione lambda o un riferimento al metodo. Quindi, dove pensi, possiamo usare queste funzioni di ritorno vero / falso nella programmazione quotidiana? Dirò che è possibile utilizzare predicati ovunque sia necessario valutare una condizione sul gruppo/raccolta di oggetti simili in modo tale che la valutazione possa risultare in vero o falso.

Ad esempio, è possibile utilizzare prdicates in questi casi di utilizzo in tempo reale

  1. Trova tutti i bambini nati dopo una data particolare
  2. Pizze ordinate un tempo specifico
  3. Dipendenti superiori a una certa età e così via..

Classe predicato Java

Quindi i predicati java sembrano essere una cosa interessante. Andiamo più a fondo.

Come ho detto, Predicate è un’interfaccia funzionale. Significa che possiamo passare espressioni lambda ovunque sia previsto il predicato. Ad esempio, uno di questi metodi è il metodo filter() dall’interfaccia Stream.

Possiamo assumere un flusso come un meccanismo per creare una sequenza di elementi che supportano operazioni aggregate sequenziali e parallele. Significa che possiamo in qualsiasi momento raccogliere ed eseguire alcune operazioni di tutti gli elementi presenti nel flusso in una sola chiamata.

Quindi, essenzialmente possiamo usare stream e predicate per–

  • prima filtrare alcuni elementi da un gruppo e
  • quindi eseguire alcune operazioni sugli elementi filtrati.

Usando Predicato su una raccolta

Per dimostrare, abbiamo una classeEmployee come di seguito:

1. Tutti i dipendenti che sono di sesso maschile e di età superiore a 21

public static Predicate<Employee> isAdultMale() { return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");}

2. Tutti i dipendenti che sono di sesso femminile e di età superiore a 18

public static Predicate<Employee> isAdultFemale() { return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");}

3. Tutti i dipendenti la cui età è più di una data età

public static Predicate<Employee> isAgeMoreThan(Integer age) { return p -> p.getAge() > age;}

È possibile costruire più di loro come un quando necessario. Fin qui tutto bene. Lontano usando i metodi di cui sopra ho incluso sopra 3 metodi in EmployeePredicates.java:

Vedi che ho creato un altro metodo di utilità filterEmployees() per mostrare il filtro predicato java. È fondamentalmente per rendere il codice pulito e meno ripetitivo. Puoi anche scrivere più di un predicato per creare una catena di predicati, come facciamo in builder pattern.

Quindi, in questa funzione passiamo l’elenco di employees e passiamo un predicato, quindi questa funzione restituirà una nuova raccolta di employees soddisfacendo la condizione menzionata nel predicato dei parametri.

I predicati sono davvero un’ottima aggiunta in Java 8 e lo userò ogni volta che avrò la possibilità.

Considerazioni finali sui predicati in Java 8

  1. Spostano le tue condizioni (a volte la logica aziendale) in un luogo centrale. Questo aiuta a testarli separatamente.
  2. Qualsiasi modifica non deve essere duplicata in più posti. Predicato Java migliora la manutenzione del codice.
  3. Il codice ad esempio “filterEmployees(employees, isAdultFemale())” è molto leggibile rispetto alla scrittura di un blocco if-else.