Понятие предиката и его роль в речи
Predicate в программировании - это функция, которая принимает на вход один или более аргументов и возвращает булево значение (true или false).
Для примера, рассмотрим класс Person:
public class Person{
private int age;
private String name;
private boolean isStudent;
public Person(int age, String name, boolean isStudent){
this.age = age;
this.name = name;
this.isStudent = isStudent;
}
public int getAge(){
return this.age;
}
public String getName(){
return this.name;
}
public boolean isStudent(){
return this.isStudent;
}
}
Создадим три экземпляра класса Person:
Person person1 = new Person(20, "John", true);
Person person2 = new Person(30, "Mary", false);
Person person3 = new Person(25, "Alex", true);
Теперь рассмотрим случаи, где нам нужно выбрать определенных людей из списка на основе их атрибутов. Для этого нам будет полезен predicate.
Например, мы можем написать predicate, который будет выбирать только студентов:
Predicate studentPredicate = (person) -> person.isStudent();
Далее мы можем использовать этот predicate, чтобы отфильтровать список людей и выбрать только студентов:
List students = List.of(person1, person2, person3)
.stream()
.filter(studentPredicate)
.collect(Collectors.toList());
Теперь в списке students будут только John и Alex, потому что они являются студентами.
Мы также можем написать другие predicate'ы, которые будут выбирать людей по другим критериям. Например, predicate, который выбирает людей старше 25 лет:
Predicate over25Predicate = (person) -> person.getAge() > 25;
List over25 = List.of(person1, person2, person3)
.stream()
.filter(over25Predicate)
.collect(Collectors.toList());
Теперь в списке over25 будут только Mary и Alex, потому что они старше 25 лет.
Таким образом, predicate - это очень полезный инструмент в программировании, который позволяет фильтровать данные и выбирать только те элементы, которые удовлетворяют определенным условиям.