Java predicat Example-predicat Filter
în matematică, un predicat este în mod obișnuit înțeles a fi o funcție cu valoare booleană 'P: X? {true, false}'
, numită predicat pe X. informal, un puternic. Acesta poate fi gândit ca un operator sau o funcție care returnează o valoare care este fie true
sau false
.
utilizarea predicatelor Java 8
în Java 8, predicatul este o interfață funcțională și, prin urmare, poate fi utilizat ca țintă de atribuire pentru o expresie lambda sau o referință a metodei. Deci, în cazul în care credeți că putem folosi aceste funcții de întoarcere adevărate/false în programarea de zi cu zi? Voi spune că puteți utiliza predicate oriunde în cazul în care aveți nevoie pentru a evalua o condiție pe grup/colectare de obiecte similare, astfel încât evaluarea poate duce fie în Adevărat sau fals.
de exemplu, puteți utiliza prdicates în aceste cazuri de utilizare în timp real
- găsiți toți copiii născuți după o anumită dată
- Pizza comandat un anumit timp
- angajați mai mari decât anumită vârstă și așa mai departe..
clasa predicat Java
deci, predicate java pare a fi un lucru interesant. Să mergem mai adânc.
după cum am spus, Predicate
este interfața funcțională. Aceasta înseamnă că putem trece expresii lambda ori de câte ori predicat este de așteptat. De exemplu, o astfel de metodă este filter()
metoda din interfața Stream.
putem presupune un flux ca mecanism pentru a crea o secvență de elemente care susțin operații agregate secvențiale și paralele. Înseamnă că putem oricând să colectăm și să efectuăm o operație a tuturor elementelor prezente în flux într-un singur apel.
deci, în esență, putem folosi stream și predicat pentru a–
- mai întâi filtrați anumite elemente dintr-un grup și
- apoi efectuați unele operații asupra elementelor filtrate.
folosind predicat pe o colecție
pentru a demonstra, avem o clasăEmployee
după cum urmează:
1. Toți angajații care sunt de sex masculin și de vârstă mai mult de 21
public static Predicate<Employee> isAdultMale() { return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");}
2. Toți angajații care sunt de sex feminin și de vârstă mai mult de 18
public static Predicate<Employee> isAdultFemale() { return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");}
3. Toți angajații a căror vârstă este mai mare decât o anumită vârstă
public static Predicate<Employee> isAgeMoreThan(Integer age) { return p -> p.getAge() > age;}
puteți construi mai multe dintre ele ca atunci când este necesar. Până acum e bine. Departe folosind metodele de mai sus am inclus mai sus 3 metode în EmployeePredicates.java :
vedeți că am creat o altă metodă utilitară filterEmployees() pentru a afișa filtrul predicat java. Practic, este de a face codul curat și mai puțin repetitiv. Puteți scrie, de asemenea, mai multe predicate pentru a face lanț predicat, așa cum facem în model constructor.
Deci, în această funcție trecem lista employees
și trecem un predicat, atunci această funcție va returna o nouă colecție de employees
care îndeplinește condiția menționată în predicatul parametrului.
predicatele sunt într-adevăr foarte bune în Java 8 și o voi folosi ori de câte ori voi avea șansa.
Gânduri finale despre predicate în Java 8
- îți mută condițiile (uneori logica de afaceri) într-un loc central. Acest lucru ajută la testarea unității separat.
- orice schimbare nu trebuie duplicată în mai multe locuri. Java predicat îmbunătățește întreținerea codului.
- codul de ex. „filterEmployees(employees, isAdultFemale())” este foarte ușor de citit decât scrierea unui bloc if-else.