Sobes.tech
Назад к вопросам
Junior — Middle
75

Объясните концепцию предикатов в языке программирования Java и их применение.

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Предикат в Java — это функциональный интерфейс для проверки условия и возврата true или false. Его используют там, где нужно отфильтровать, проверить или выбрать элементы по правилу. Важно понимать, что предикат хорошо ложится на Stream API, коллекции и валидацию данных.

Определение:

Predicate<T> — это встроенный функциональный интерфейс из java.util.function, который представляет функцию с одним аргументом и результатом типа boolean. Он описывает условие: подходит объект или нет. Основной метод — test(T t).

Предикаты часто используют для:

  • фильтрации элементов;
  • проверки условий;
  • построения составных условий через and, or, negate.

Пример использования:

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class PredicateExample {
    public static void main(String[] args) {
        List<String> names = List.of("Alex", "Bob", "Anastasia", "John");

        Predicate<String> startsWithA = name -> name.startsWith("A");

        List<String> filtered = names.stream()
                .filter(startsWithA)
                .collect(Collectors.toList());

        System.out.println(filtered); // [Alex, Anastasia]
    }
}

Пояснение кода:

В этом примере создается предикат startsWithA, который проверяет, начинается ли строка с буквы A. Затем этот предикат передается в filter(), чтобы оставить только подходящие элементы. В результате из исходного списка получаются только имена, удовлетворяющие условию.

Код показывает типичный сценарий использования предиката:

  1. задается условие;
  2. условие передается в обработку коллекции;
  3. возвращаются только подходящие элементы.

Ключевые моменты:

  • Predicate<T> возвращает только boolean.
  • Основной метод предиката — test(T t).
  • Предикаты удобно использовать с Stream API, особенно в filter().
  • Можно комбинировать условия через and(), or() и negate().
  • Предикаты помогают вынести бизнес-логику проверки в переиспользуемую форму.
  • Это один из базовых инструментов функционального программирования в Java.