Java Predikat Eksempel-Predikat Filter

i matematikk er et predikat vanligvis forstått å være en boolsk-verdsatt funksjon 'P: X? {true, false}', kalt predikatet På X. Uformelt, en sterk. Det kan betraktes som en operator eller funksjon som returnerer en verdi som enten er true eller false.

Java 8 Predikater Bruk

I Java 8 Er Predikat et funksjonelt grensesnitt og kan derfor brukes som tildelingsmål for et lambda-uttrykk eller metodereferanse. Så, hvor du tror, kan vi bruke disse sanne / falske returfunksjonene i daglig programmering? Jeg vil si at du kan bruke predikater hvor som helst der du må evaluere en tilstand på gruppe/samling av lignende objekter slik at evaluering kan resultere enten i sann eller falsk.

du kan for eksempel bruke prdicates i disse sanntids usecases

  1. Finn alle barn født etter en bestemt dato
  2. Pizza bestilt en bestemt tid
  3. Ansatte større enn viss alder og så videre..

Java Predikat Klasse

så java predikater synes å være interessant ting. La oss gå dypere.

som jeg sa, Predicate er funksjonelt grensesnitt. Det betyr at vi kan passere lambda-uttrykk hvor predikat forventes. For eksempel er en slik metode filter() metode Fra Stream interface.

Vi kan anta en strøm som en mekanisme for å skape en sekvens av elementer som støtter sekvensielle og parallelle aggregatoperasjoner. Det betyr at vi når som helst kan samle inn og utføre en operasjon av alle elementene som er tilstede i strømmen i en samtale.

så, i hovedsak kan vi bruke stream og predikat til–

  • først filtrere visse elementer fra en gruppe, og
  • deretter utføre noen operasjon på filtrerte elementer.

Ved hjelp Av Predikat på en samling

for å demonstrere, har vi enEmployee klasse som nedenfor:

1. Alle Ansatte som er mann og alder mer enn 21

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

2. Alle Ansatte som er kvinner og alder mer enn 18

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

3. Alle Ansatte hvis alder er mer enn en gitt alder

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

du kan bygge flere av dem som en når det trengs. Så langt så bra. Langt ved å bruke ovennevnte metoder har jeg tatt med over 3 metoder I EmployeePredicates.java:

du ser at jeg har opprettet en annen verktøymetode filterEmployees() for å vise java predikatfilter. Det er i utgangspunktet å gjøre koden ren og mindre repeterende. Du kan også skrive mer enn ett predikat for å lage predikatkjede, som vi gjør i builder pattern.

så, i denne funksjonen passerer vi listen over employees og vi sender et predikat, da vil denne funksjonen returnere en ny samling av employees som tilfredsstiller tilstanden nevnt i parameter predikat.

Predikater er veldig bra tillegg I Java 8, og jeg skal bruke den når jeg får sjanse.

Avsluttende Tanker Om Predikater I Java 8

  1. de flytter forholdene dine (noen ganger forretningslogikk) til et sentralt sted. Dette hjelper i enhetstesting dem separat.
  2. enhver endring trenger ikke dupliseres til flere steder. Java predikat forbedrer kode vedlikehold.
  3. koden f.eks. «filterEmployees(employees, isAdultFemale())» er veldig lesbar enn å skrive en if-else-blokk.