Java – Predikaattiesimerkki-Predikaattisuodatin

matematiikassa predikaatti ymmärretään yleisesti Boolen arvoiseksi funktioksi 'P: X? {true, false}', jota kutsutaan X: n predikaatiksi epävirallisesti, A: ksi. Se voidaan ajatella operaattorina tai funktiona, joka palauttaa arvon, joka on joko true tai false.

Java 8 predikaattien käyttö

Java 8: ssa predikaatti on funktionaalinen rajapinta, joten sitä voidaan käyttää Lambda-lausekkeen tai metodiviittauksen osoituskohteena. Joten, missä luulet, voimme käyttää näitä true / false palautusfunktioita päivittäisessä ohjelmoinnissa? Sanon voit käyttää predikaatteja missä tahansa, jossa sinun täytyy arvioida ehto ryhmä / kokoelma samanlaisia objekteja siten, että arviointi voi johtaa joko tosi tai epätosi.

esimerkiksi näissä reaaliaikaisissa käyttötilaisuuksissa

  1. Etsi kaikki tietyn päivämäärän jälkeen syntyneet lapset
  2. tietyn ajan tilatut pizzat
  3. tietyn iän ylittäneet työntekijät ja niin edelleen..

Javan Predikaattiluokka

joten Javan predikaatit vaikuttavat mielenkiintoiselta jutulta. Mennään syvemmälle.

kuten sanoin, Predicate on toiminnallinen rajapinta. Se tarkoittaa, että voimme välittää lambda-lausekkeita kaikkialla, missä predikaattia odotetaan. Esimerkiksi yksi tällainen menetelmä on filter() menetelmä Stream-rajapinnasta.

voidaan olettaa, että virta on mekanismi, jolla luodaan peräkkäisiä ja rinnakkaisia aggregaattioperaatioita tukeva alkuainesarja. Se tarkoittaa, että voimme milloin tahansa kerätä ja suorittaa joitakin toimia kaikkien elementtien läsnä stream yhdellä puhelulla.

niin, periaatteessa Voimme käyttää stream ja predikaatti–

  • suodata ensin tietyt alkuaineet ryhmästä ja
  • suorita sitten jokin operaatio suodatetuille alkuaineille.

käyttäen predikaattia kokoelmassa

osoittaakseen, meillä on Employee luokka kuten alla:

1. Kaikki työntekijät, jotka ovat miehiä ja ikä yli 21

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

2. Kaikki työntekijät, jotka ovat naisia ja ikä yli 18

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

3. Kaikki työntekijät, joiden ikä on yli tietyn iän

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

voit rakentaa niitä lisää tarvittaessa. Toistaiseksi kaikki hyvin. Far käyttämällä edellä menetelmiä olen sisällyttänyt edellä 3 menetelmiä EmployeePredicates.java:

you see I have created another utility method filter employees () to show java predikaattisuodatin. Se on pohjimmiltaan tehdä koodin puhdas ja vähemmän toistuvia. Voit myös kirjoittaa enemmän kuin yksi predikaatti tehdä predikaatti ketju, kuten teemme rakentaja kuvio.

joten tässä funktiossa ohitamme luettelon employees ja ohitamme predikaatin, niin tämä funktio palauttaa uuden kokoelman employees, joka täyttää parametrissa predikaatissa mainitun ehdon.

predikaatit ovat todella hyviä yhteenlaskuja Java 8: ssa ja aion käyttää sitä aina kun saan mahdollisuuden.

lopullisia ajatuksia Predikaateista Jaavassa 8

  1. ne siirtävät ehtosi (joskus bisneslogiikka) keskeiselle paikalle. Tämä auttaa yksikkötestauksessa erikseen.
  2. mitään muutosta ei tarvitse toistaa useaan paikkaan. Java predikaatti parantaa koodin ylläpitoa.
  3. koodi esim. ”filter employees (employees, isadultfemale ())” on hyvin luettavissa kuin if-else-lohkon kirjoittaminen.