РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
514 of 1163 menu

Метод negate

Метод negate класса Predicate возвращает новый предикат, который является логическим отрицанием исходного предиката. Иными словами, если исходный предикат возвращал true, то новый предикат вернет false, и наоборот. Метод не принимает параметров и не изменяет исходный предикат - он создает и возвращает новый объект Predicate.

Метод negate особенно удобен при работе со Stream API, когда нужно инвертировать условие фильтрации, не переписывая логику самого предиката.

Синтаксис

Predicate<T> negate()

Метод возвращает новый предикат типа Predicate<T>, представляющий логическое отрицание исходного предиката.

Пример

Давайте создадим предикат, проверяющий, что число четное, и получим его отрицание:

import java.util.function.Predicate; public class Main { public static void main(String[] args) { Predicate<Integer> isEven = n -> n % 2 == 0; Predicate<Integer> isOdd = isEven.negate(); System.out.println(isEven.test(4)); System.out.println(isOdd.test(4)); System.out.println(isOdd.test(5)); } }

Результат выполнения кода:

true false true

Пример

Давайте используем negate вместе со Stream API, чтобы отфильтровать строки, которые не начинаются с буквы "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", "12345"); Predicate<String> startsWithA = s -> s.startsWith("a"); Predicate<String> notStartsWithA = startsWithA.negate(); List<String> res = list.stream() .filter(notStartsWithA) .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[bcdef, 12345]

Пример

Давайте применим negate к предикату, проверяющему, что число больше 3, и отфильтруем коллекцию:

import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4, 5); Predicate<Integer> greaterThanThree = n -> n > 3; Predicate<Integer> notGreaterThanThree = greaterThanThree.negate(); List<Integer> res = list.stream() .filter(notGreaterThanThree) .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[1, 2, 3]

Смотрите также

  • класс Predicate,
    который представляет функцию-условие
  • метод test,
    который проверяет значение по условию
  • метод and,
    который объединяет два предиката через логическое И
  • метод filter,
    который фильтрует элементы потока по предикату
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить