Java predikat exempel – predikat Filter

i matematik, ett predikat är allmänt förstås vara en boolesk värderad funktion 'P: X? {true, false}', kallas predikatet på X. informellt, en stark. Det kan ses som en operatör eller funktion som returnerar ett värde som är antingen true eller false.

Java 8 Predikatanvändning

i Java 8 är predikat ett funktionellt gränssnitt och kan därför användas som tilldelningsmål för ett lambda-uttryck eller metodreferens. Så, där du tror, kan vi använda dessa sanna / falska returfunktioner i daglig programmering? Jag kommer att säga att du kan använda predikat var som helst där du behöver utvärdera ett villkor för grupp/samling av liknande objekt så att utvärdering kan resultera antingen i sant eller falskt.

du kan till exempel använda prdicates i dessa realtidsanvändningsfall

  1. hitta alla barn födda efter ett visst datum
  2. pizzor beställde en viss tid
  3. anställda som är större än viss ålder och så vidare..

Java predikat klass

så java predikat verkar vara intressant sak. Låt oss gå djupare.

som sagt, Predicate är funktionellt gränssnitt. Det betyder att vi kan passera lambda-uttryck varhelst predikat förväntas. Till exempel är en sådan metod filter() metod från Stream interface.

vi kan anta en ström som en mekanism för att skapa en sekvens av element som stöder sekventiella och parallella aggregerade operationer. Det betyder att vi kan när som helst samla in och utföra en viss operation av alla element som finns i strömmen i ett samtal.

så, i huvudsak kan vi använda ström och predikat till–

  • filtrera först vissa element från en grupp och
  • utför sedan en viss operation på filtrerade element.

använda predikat på en samling

för att demonstrera har vi en Employee klass enligt nedan:

1. Alla anställda som är män och ålder mer än 21

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

2. Alla anställda som är kvinnor och ålder mer än 18

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

3. Alla anställda vars ålder är mer än en given ålder

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

du kan bygga fler av dem som en när det behövs. Hittills så bra. Långt med ovanstående metoder har jag inkluderat ovan 3 metoder i EmployeePredicates.java:

du ser att jag har skapat en annan verktygsmetod filteranställda() för att visa java predikatfilter. Det är i grunden att göra koden ren och mindre repetitiv. Du kan också skriva mer än ett predikat för att göra predikatkedja, som vi gör i builder pattern.

så, i den här funktionen passerar vi listan över employees och vi skickar ett predikat, då kommer denna funktion att returnera en ny samling av employees som uppfyller villkoret som nämns i parameterpredikat.

predikat är verkligen mycket bra tillägg i Java 8 och jag kommer att använda den när jag kommer att få chans.

slutliga tankar om predikat i Java 8

  1. de flyttar dina förhållanden (ibland affärslogik) till en central plats. Detta hjälper till att testa dem separat.
  2. alla ändringar behöver inte dupliceras på flera platser. Java predikat förbättrar kodunderhåll.
  3. koden t.ex. ”filter employees(employees, isAdultFemale())” är mycket läsbar än att skriva ett if-else-block.