Java Predikát Příklad – Predikát Filtr
V matematice, predikát je běžně chápán jako booleovské funkce 'P: X? {true, false}'
, tzv. predikát na X. Neformálně, silný. To může být myšlenka jako operátor nebo funkce, která vrací hodnotu, která je buď true
nebo false
.
Java 8 Predikáty Použití
V Java 8, Predikát je funkční rozhraní, a proto může být použit jako úkol, cíl pro lambda výraz nebo metoda referenční. Takže, kde si myslíte, že můžeme použít tyto true / false vracející se funkce v každodenním programování? Řeknu, že můžete použít predikáty kdekoli, kde potřebujete vyhodnotit podmínku skupiny / sbírky podobných objektů tak, aby vyhodnocení mohlo mít za následek buď pravdivé nebo nepravdivé.
například, můžete použít prdicates v těchto realtime usecases
- Najít všechny děti narodila po konkrétní datum
- Pizzy objednat na konkrétní čas
- Zaměstnanců větší než určitého věku, a tak dále..
Java Predikát Třídy
java predikáty se zdá být zajímavá věc. Pojďme hlouběji.
jak jsem řekl, Predicate
je funkční rozhraní. To znamená, že můžeme předat lambda výrazy všude tam, kde se očekává predikát. Jednou z takových metod je například filter()
metoda z rozhraní streamu.
můžeme předpokládat proud jako mechanismus pro vytvoření sekvence prvků podporujících sekvenční a paralelní agregační operace. To znamená, že můžeme kdykoli shromáždit a provést nějakou operaci všech prvků přítomných v proudu v jednom hovoru.
Takže v podstatě můžeme použít proud a predikát, aby–
- první filtr některé prvky ze skupiny, a
- pak provádět některé operace na filtrované prvky.
pomocí predikátu na kolekci
pro demonstraci máme třídu Employee
, jak je uvedeno níže:
1. Všichni zaměstnanci, kteří jsou muži a věk více než 21
public static Predicate<Employee> isAdultMale() { return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");}
2. Všichni zaměstnanci, kteří jsou ženy a věk více než 18
public static Predicate<Employee> isAdultFemale() { return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");}
3. Všichni zaměstnanci, jejichž věk je vyšší než daný věk
public static Predicate<Employee> isAgeMoreThan(Integer age) { return p -> p.getAge() > age;}
můžete jich v případě potřeby postavit více. Zatím je to dobré. Daleko za použití výše uvedených metod jsem zahrnul výše 3 metody v EmployeePredicates.java:
vidíte, že jsem vytvořil jinou metodu nástroje filterEmployees () pro zobrazení filtru predikátu java. Je to v podstatě, aby byl kód čistý a méně opakující se. Můžete také napsat více než jeden predikát, abyste vytvořili predikátový řetězec, jako to děláme ve stavitelském vzoru.
Takže, v této funkci předáme seznam employees
a my jsme projít predikát, pak tato funkce vrátí novou kolekci employees
splňující podmínky uvedené v parametru predikátu.
predikáty jsou opravdu velmi dobrý doplněk v Javě 8 a budu ji používat, kdykoli budu mít šanci.
Závěrečné myšlenky na predikáty v Javě 8
- přesouvají vaše podmínky (někdy obchodní logiku) na centrální místo. To pomáhá při jednotkovém testování Samostatně.
- jakákoliv změna nemusí být duplikována na více míst. Java predicate zlepšuje údržbu kódu.
- kód např. „filterEmployees(employees, isAdultFemale ())“ je mnohem čitelnější než psaní bloku if-else.