Составление предикатов JAVA гиперскил - PullRequest
0 голосов
/ 04 мая 2020

Я практикую свои java навыки в Hyperskill, и я не могу понять это упражнение по составлению предикатов.

Напишите метод disjunctAll, который принимает список IntPredicate и возвращает один IntPredicate. Предикат результата - это дизъюнкция всех входных предикатов.

Если входной список пуст, тогда предикат результата должен возвращать false для любого целочисленного значения (всегда false).

Важно. Обратите внимание на предоставленный шаблон метода. Не меняйте его.

public static IntPredicate disjunctAll(List<IntPredicate> predicates) {

}

1 Ответ

0 голосов
/ 04 мая 2020

Простая итерация списка будет делать это:

    public static IntPredicate disjunctAll(List<IntPredicate> predicates)
    {
        IntPredicate result = i -> false;
        for (IntPredicate p: predicates) {
            result = p.or(result);
        }
        return result;
    }

или просто с помощью потокового редуктора:

    public static IntPredicate disjunctAll(List<IntPredicate> predicates)
    {
        return predicates.stream()
            .reduce(i -> false, IntPredicate::or);
    }

...