Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Предикат: Фільтрація Даних | Основи Та Функціональні Можливості Stream API
Stream API

bookПредикат: Фільтрація Даних

Основне призначення Predicate — забезпечення зручної фільтрації даних на основі заданої умови. Цей функціональний інтерфейс містить єдиний абстрактний метод:

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}

Додатково надаються дефолтні методи для комбінування умов, такі як and(), or() та negate(), які будуть розглянуті пізніше.

Практичне застосування

Синтаксис для всіх функціональних інтерфейсів має схожий шаблон і є досить простим:

Predicate<T> predicate = t -> condition;

Тут T позначає тип вхідного аргументу, а condition — це вираз, який повертає або true, або false.

Наприклад, потрібно перевірити, чи є задане число парним. Для цього можна використати Predicate наступним чином:

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: Check if a number is even Predicate<Integer> isEven = number -> number % 2 == 0; int number = 4; if (isEven.test(number)) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }

Цей код використовує метод test() інтерфейсу Predicate, який призначений для оцінювання умов. При виклику test() виконується логіка, визначена у лямбда-виразі number -> number % 2 == 0, що перевіряє, чи число ділиться на 2 без залишку, визначаючи його парність.

Тут Predicate використовується для перевірки, чи є задане число парним, а метод test() застосовує цю умову.

Комбінування умов

Predicate надає можливість комбінувати умови за допомогою методів and(), or() та negate(). Це дозволяє виконувати більш складні перевірки. Розглянемо кілька прикладів:

Умова AND

Припустимо, потрібно перевірити, чи число відповідає двом критеріям: воно повинно бути більше 10 та парним.

Для цього можна використати метод and(), аналогічно до оператора && у Java, щоб переконатися, що обидві умови повертають true.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is greater than 10 Predicate<Integer> isGreaterThanTen = number -> number > 10; // Condition 2: The number is even Predicate<Integer> isEven = number -> number % 2 == 0; // Combined condition: The number is greater than 10 and even Predicate<Integer> combinedCondition = isGreaterThanTen.and(isEven); int number = 12; if (combinedCondition.test(number)) { System.out.println(number + " meets both conditions."); } else { System.out.println(number + " does not meet the conditions."); } } }

Метод and() об'єднує дві умови. Число повинно відповідати обом критеріям, щоб результат був true.

Умова OR

Тепер розглянемо ситуацію, коли потрібно перевірити, чи число є або меншим за 5, або більшим за 15.

Можна використати метод or(), аналогічно до оператора || у Java, щоб переконатися, що хоча б одна з умов повертає true.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is less than 5 Predicate<Integer> isLessThanFive = number -> number < 5; // Condition 2: The number is greater than 15 Predicate<Integer> isGreaterThanFifteen = number -> number > 15; // Combined condition: The number is less than 5 or greater than 15 Predicate<Integer> combinedCondition = isLessThanFive.or(isGreaterThanFifteen); int number = 3; if (combinedCondition.test(number)) { System.out.println(number + " meets at least one of the conditions."); } else { System.out.println(number + " does not meet any of the conditions."); } } }

Метод or() перевіряє, чи число задовольняє хоча б одну з вказаних умов. Це корисно, коли достатньо виконання лише одного критерію.

NEGATE Умова

Припустимо, потрібно перевірити, чи рядок є непорожнім.

Можна використати метод negate(), аналогічно до оператора ! у Java, щоб інвертувати результат умови.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: The string is empty Predicate<String> isEmpty = str -> str == null || str.isEmpty(); // Condition: The string is not empty Predicate<String> isNotEmpty = isEmpty.negate(); String text = "Hello"; if (isNotEmpty.test(text)) { System.out.println("The string contains text: " + text); } else { System.out.println("The string is empty."); } } }

Метод negate() інвертує умову. Якщо початкова умова повертає true, інвертована версія поверне false, і навпаки.

1. Яке основне призначення функціонального інтерфейсу Predicate у Java?

2. Яким буде результат виконання наступного коду?

question mark

Яке основне призначення функціонального інтерфейсу Predicate у Java?

Select the correct answer

question mark

Яким буде результат виконання наступного коду?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 2.33

bookПредикат: Фільтрація Даних

Свайпніть щоб показати меню

Основне призначення Predicate — забезпечення зручної фільтрації даних на основі заданої умови. Цей функціональний інтерфейс містить єдиний абстрактний метод:

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}

Додатково надаються дефолтні методи для комбінування умов, такі як and(), or() та negate(), які будуть розглянуті пізніше.

Практичне застосування

Синтаксис для всіх функціональних інтерфейсів має схожий шаблон і є досить простим:

Predicate<T> predicate = t -> condition;

Тут T позначає тип вхідного аргументу, а condition — це вираз, який повертає або true, або false.

Наприклад, потрібно перевірити, чи є задане число парним. Для цього можна використати Predicate наступним чином:

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: Check if a number is even Predicate<Integer> isEven = number -> number % 2 == 0; int number = 4; if (isEven.test(number)) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }

Цей код використовує метод test() інтерфейсу Predicate, який призначений для оцінювання умов. При виклику test() виконується логіка, визначена у лямбда-виразі number -> number % 2 == 0, що перевіряє, чи число ділиться на 2 без залишку, визначаючи його парність.

Тут Predicate використовується для перевірки, чи є задане число парним, а метод test() застосовує цю умову.

Комбінування умов

Predicate надає можливість комбінувати умови за допомогою методів and(), or() та negate(). Це дозволяє виконувати більш складні перевірки. Розглянемо кілька прикладів:

Умова AND

Припустимо, потрібно перевірити, чи число відповідає двом критеріям: воно повинно бути більше 10 та парним.

Для цього можна використати метод and(), аналогічно до оператора && у Java, щоб переконатися, що обидві умови повертають true.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is greater than 10 Predicate<Integer> isGreaterThanTen = number -> number > 10; // Condition 2: The number is even Predicate<Integer> isEven = number -> number % 2 == 0; // Combined condition: The number is greater than 10 and even Predicate<Integer> combinedCondition = isGreaterThanTen.and(isEven); int number = 12; if (combinedCondition.test(number)) { System.out.println(number + " meets both conditions."); } else { System.out.println(number + " does not meet the conditions."); } } }

Метод and() об'єднує дві умови. Число повинно відповідати обом критеріям, щоб результат був true.

Умова OR

Тепер розглянемо ситуацію, коли потрібно перевірити, чи число є або меншим за 5, або більшим за 15.

Можна використати метод or(), аналогічно до оператора || у Java, щоб переконатися, що хоча б одна з умов повертає true.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition 1: The number is less than 5 Predicate<Integer> isLessThanFive = number -> number < 5; // Condition 2: The number is greater than 15 Predicate<Integer> isGreaterThanFifteen = number -> number > 15; // Combined condition: The number is less than 5 or greater than 15 Predicate<Integer> combinedCondition = isLessThanFive.or(isGreaterThanFifteen); int number = 3; if (combinedCondition.test(number)) { System.out.println(number + " meets at least one of the conditions."); } else { System.out.println(number + " does not meet any of the conditions."); } } }

Метод or() перевіряє, чи число задовольняє хоча б одну з вказаних умов. Це корисно, коли достатньо виконання лише одного критерію.

NEGATE Умова

Припустимо, потрібно перевірити, чи рядок є непорожнім.

Можна використати метод negate(), аналогічно до оператора ! у Java, щоб інвертувати результат умови.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // Condition: The string is empty Predicate<String> isEmpty = str -> str == null || str.isEmpty(); // Condition: The string is not empty Predicate<String> isNotEmpty = isEmpty.negate(); String text = "Hello"; if (isNotEmpty.test(text)) { System.out.println("The string contains text: " + text); } else { System.out.println("The string is empty."); } } }

Метод negate() інвертує умову. Якщо початкова умова повертає true, інвертована версія поверне false, і навпаки.

1. Яке основне призначення функціонального інтерфейсу Predicate у Java?

2. Яким буде результат виконання наступного коду?

question mark

Яке основне призначення функціонального інтерфейсу Predicate у Java?

Select the correct answer

question mark

Яким буде результат виконання наступного коду?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 4
some-alt