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
- Trova tutti i bambini nati dopo una data particolare
- Pizze ordinate un tempo specifico
- 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
- Spostano le tue condizioni (a volte la logica aziendale) in un luogo centrale. Questo aiuta a testarli separatamente.
- Qualsiasi modifica non deve essere duplicata in più posti. Predicato Java migliora la manutenzione del codice.
- Il codice ad esempio “filterEmployees(employees, isAdultFemale())” è molto leggibile rispetto alla scrittura di un blocco if-else.