Метод test класса Predicate
Метод test класса Predicate принимает
одно значение и возвращает результат проверки
в виде boolean. В первый параметр мы передаем
проверяемое значение. Если значение удовлетворяет
условию предиката, метод возвращает true,
иначе - false. Этот метод часто используется
совместно со stream-операциями, например, с методом
filter, который отбирает элементы потока
по заданному условию.
Синтаксис
boolean test(T t)
Пример
Давайте создадим предикат, который проверяет,
что число больше 3, и протестируем его
для нескольких значений:
import java.util.function.Predicate;
public class Main
{
public static void main(String[] args)
{
Predicate<Integer> isGreaterThanThree = x -> x > 3;
System.out.println(isGreaterThanThree.test(5));
System.out.println(isGreaterThanThree.test(2));
}
}
Результат выполнения кода:
true
false
Пример
Давайте используем метод test вместе
с методом filter для отбора строк,
которые начинаются с буквы "a":
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("abcde", "bcdef", "acdef", "cdefg");
Predicate<String> startsWithA = s -> s.startsWith("a");
List<String> res = list.stream()
.filter(startsWithA)
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[abcde, acdef]
Пример
Давайте проверим, все ли элементы списка
больше 0, используя метод test
напрямую:
import java.util.List;
import java.util.function.Predicate;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
Predicate<Integer> isPositive = x -> x > 0;
boolean res = true;
for (Integer num : list)
{
if (!isPositive.test(num))
{
res = false;
break;
}
}
System.out.println(res);
}
}
Результат выполнения кода:
true