Java predikátum példa – predikátum szűrő

a matematikában a predikátum általában logikai értékű függvény 'P: X? {true, false}', az úgynevezett predikátum X. informálisan, erős. Olyan operátornak vagy függvénynek tekinthető, amely true vagy falseértéket ad vissza.

Java 8 predikátumok használata

a Java 8-ban a predikátum funkcionális interfész, ezért használható lambda kifejezés vagy metódus referencia hozzárendelési célpontjaként. Szóval, hol gondolod, használhatjuk ezeket az igaz / hamis visszatérő funkciókat a napi programozásban? Azt fogom mondani, hogy predikátumokat használhat bárhol, ahol ki kell értékelnie a hasonló objektumok csoportjának/gyűjteményének állapotát, hogy az értékelés igaz vagy hamis eredményt eredményezzen.

például használhatja prdicates ezekben realtime usecases

  1. keresse meg az összes gyermek született egy adott dátum után
  2. pizzák rendelt egy adott időpontban
  3. alkalmazottak nagyobb, mint egy bizonyos életkor, és így tovább..

Java predikátum osztály

tehát a java predikátumok érdekesnek tűnnek. Menjünk mélyebbre.

mint mondtam, Predicate funkcionális interfész. Ez azt jelenti, hogy átadhatjuk a lambda kifejezéseket, ahol a predikátum várható. Például az egyik ilyen módszer a filter() módszer a Stream interfészről.

feltételezhetjük, hogy a stream olyan mechanizmus, amely a szekvenciális és párhuzamos aggregációs műveleteket támogató elemek sorozatát hozza létre. Ez azt jelenti, hogy bármikor összegyűjthetjük és végrehajthatjuk a folyamban lévő összes elem működését egy hívás során.

tehát lényegében használhatjuk stream és predikátum–

  • először szűrjön ki bizonyos elemeket egy csoportból, majd
  • , majd végezzen néhány műveletet a szűrt elemeken.

predikátum használata egy gyűjteményen

a bemutatáshoz van egy Employee osztályunk az alábbiak szerint:

1. Minden munkavállaló, aki Férfi és idősebb, mint 21

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

2. Minden olyan munkavállaló, aki nő, és több mint 18

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

3. Minden alkalmazott, akinek életkora több, mint egy adott életkor

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

lehet építeni többet közülük, mint egy, ha szükséges. Eddig minden rendben. Messze a fenti módszerek használatával a fenti 3 módszereket felvettem az EmployeePredicates-be.java:

látod, hogy létrehoztam egy másik segédprogramot filtermunkások() a java predikátum szűrő megjelenítéséhez. Ez alapvetően, hogy a kód tiszta és kevésbé ismétlődő. Azt is írni több predikátumok, hogy predikátum lánc, mint mi builder pattern.

tehát ebben a függvényben átadjuk a employees listát, és átadunk egy predikátumot, akkor ez a függvény egy új employees gyűjteményt ad vissza, amely megfelel a paraméter predikátumban említett feltételnek.

a predikátumok nagyon jó kiegészítői a Java 8-nak, és bármikor használni fogom.

záró gondolatok a Java Predikátumokról 8

  1. áthelyezik a feltételeket (néha az üzleti logikát) egy központi helyre. Ez segít az egység-tesztelés őket külön-külön.
  2. semmilyen változtatást nem kell több helyre másolni. A Java predikátum javítja a kód karbantartását.
  3. A kód pl. “filtermunkások(alkalmazottak, isAdultFemale ())” nagyon olvasható, mint egy if-else blokk írása.