Predykat w Javie to funkcja interfejsowa zdefiniowana w pakiecie java.util.function
. Interfejs Predicate<T>
reprezentuje wyrażenie przyjmujące jeden argument typu T
i zwracające wartość typu boolean
. Jest to często używane w programowaniu funkcyjnym Javy, na przykład przy filtracji danych w kolekcjach.
Przykład użycia predykatu w Javie
W tym przykładzie stworzymy prosty system filtracji osób, używając predykatu do określenia, czy dana osoba spełnia określone kryteria (np. czy osoba jest pełnoletnia).
Definicja klasy Person
// Klasa reprezentująca osobę
public class Person {
String name;
int age;
// Konstruktor klasy Person
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter dla wieku
public int getAge() {
return age;
}
// Getter dla imienia
public String getName() {
return name;
}
}
Użycie interfejsu Predicate<T>
do filtrowania osób
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class PredicateExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Jan", 18));
people.add(new Person("Anna", 16));
people.add(new Person("Adam", 22));
// Predykat sprawdzający, czy osoba jest pełnoletnia
Predicate<Person> isAdult = person -> person.getAge() >= 18;
// Filtracja listy osób używając predykatu
List<Person> adults = people.stream()
.filter(isAdult)
.collect(Collectors.toList());
// Wyświetlanie pełnoletnich osób
adults.forEach(adult -> System.out.println(adult.getName()));
}
}
W powyższym kodzie, Predicate<Person> isAdult
definiuje predykat, który przyjmuje obiekt typu Person
i zwraca true
jeśli osoba jest pełnoletnia (ma 18 lat lub więcej). Następnie, używamy tego predykatu do filtrowania listy osób, pozostawiając tylko te, które spełniają kryterium bycia pełnoletnim.
Podsumowanie
Predykaty w Javie są potężnym narzędziem umożliwiającym tworzenie skondensowanych i czytelnych warunków w operacjach takich jak filtracja kolekcji. Użycie interfejsu Predicate<T>
wspiera podejście funkcyjne do programowania, pozwalając na łatwe tworzenie reużywalnych komponentów logiki biznesowej. Dzięki temu kod staje się bardziej modularny, testowalny i łatwiejszy w utrzymaniu.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.