Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Predicaat: Gegevensfiltering | Fundamenten en Functionele Mogelijkheden van Stream API
Stream-API

bookPredicaat: Gegevensfiltering

Het primaire doel van Predicate is het vergemakkelijken van gegevensfiltering op basis van een bepaalde voorwaarde. Deze functionele interface bevat één abstracte methode:

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

Daarnaast biedt het standaardmethoden voor het combineren van voorwaarden, zoals and(), or() en negate(), die we later zullen behandelen.

Praktische Toepassing

De syntaxis voor alle functionele interfaces volgt een vergelijkbaar patroon en is vrij eenvoudig:

Predicate<T> predicate = t -> condition;

Hier staat T voor het type van het invoerveld, en condition is een expressie die true of false retourneert.

Stel dat je moet controleren of een bepaald getal even is. Je kunt hiervoor een Predicate gebruiken als volgt:

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."); } } }

Deze code maakt gebruik van de test()-methode van de Predicate-interface, die is ontworpen voor het evalueren van voorwaarden. Wanneer test() wordt aangeroepen, voert het de logica uit die is gedefinieerd in de lambda-expressie number -> number % 2 == 0, waarbij wordt gecontroleerd of het getal deelbaar is door 2 zonder rest, wat de evenheid bepaalt.

Hier wordt Predicate gebruikt om te verifiëren of een gegeven getal even is, en de test()-methode past de voorwaarde toe.

Voorwaarden combineren

Predicate biedt de mogelijkheid om voorwaarden te combineren met de methoden and(), or() en negate(). Dit maakt complexere controles mogelijk. Hier volgen enkele voorbeelden:

EN-voorwaarde

Stel dat gecontroleerd moet worden of een getal aan twee criteria voldoet: het moet groter zijn dan 10 en even zijn.

Hiervoor kan de methode and() worden gebruikt, vergelijkbaar met de operator && in Java, om te waarborgen dat beide voorwaarden true moeten retourneren.

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."); } } }

De methode and() combineert twee voorwaarden. Een getal moet aan beide criteria voldoen om als resultaat true te geven.

OF Voorwaarde

Stel dat u moet controleren of een getal kleiner is dan 5 of groter dan 15.

U kunt de methode or() gebruiken, net als de operator || in Java, om ervoor te zorgen dat ten minste één van de voorwaarden true retourneert.

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."); } } }

De methode or() controleert of een getal aan ten minste één van de opgegeven voorwaarden voldoet. Dit is nuttig wanneer het voldoen aan slechts één criterium voldoende is.

NEGATE Voorwaarde

Stel dat u moet controleren of een string niet leeg is.

U kunt de methode negate() gebruiken, net als de operator ! in Java, om het resultaat van een voorwaarde om te keren.

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."); } } }

De methode negate() keert een voorwaarde om. Als de oorspronkelijke voorwaarde true retourneert, zal de omgekeerde versie false retourneren, en omgekeerd.

1. Wat is het primaire doel van de functionele interface Predicate in Java?

2. Wat zal de uitvoer zijn van de volgende code?

question mark

Wat is het primaire doel van de functionele interface Predicate in Java?

Select the correct answer

question mark

Wat zal de uitvoer zijn van de volgende code?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 2.33

bookPredicaat: Gegevensfiltering

Veeg om het menu te tonen

Het primaire doel van Predicate is het vergemakkelijken van gegevensfiltering op basis van een bepaalde voorwaarde. Deze functionele interface bevat één abstracte methode:

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

Daarnaast biedt het standaardmethoden voor het combineren van voorwaarden, zoals and(), or() en negate(), die we later zullen behandelen.

Praktische Toepassing

De syntaxis voor alle functionele interfaces volgt een vergelijkbaar patroon en is vrij eenvoudig:

Predicate<T> predicate = t -> condition;

Hier staat T voor het type van het invoerveld, en condition is een expressie die true of false retourneert.

Stel dat je moet controleren of een bepaald getal even is. Je kunt hiervoor een Predicate gebruiken als volgt:

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."); } } }

Deze code maakt gebruik van de test()-methode van de Predicate-interface, die is ontworpen voor het evalueren van voorwaarden. Wanneer test() wordt aangeroepen, voert het de logica uit die is gedefinieerd in de lambda-expressie number -> number % 2 == 0, waarbij wordt gecontroleerd of het getal deelbaar is door 2 zonder rest, wat de evenheid bepaalt.

Hier wordt Predicate gebruikt om te verifiëren of een gegeven getal even is, en de test()-methode past de voorwaarde toe.

Voorwaarden combineren

Predicate biedt de mogelijkheid om voorwaarden te combineren met de methoden and(), or() en negate(). Dit maakt complexere controles mogelijk. Hier volgen enkele voorbeelden:

EN-voorwaarde

Stel dat gecontroleerd moet worden of een getal aan twee criteria voldoet: het moet groter zijn dan 10 en even zijn.

Hiervoor kan de methode and() worden gebruikt, vergelijkbaar met de operator && in Java, om te waarborgen dat beide voorwaarden true moeten retourneren.

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."); } } }

De methode and() combineert twee voorwaarden. Een getal moet aan beide criteria voldoen om als resultaat true te geven.

OF Voorwaarde

Stel dat u moet controleren of een getal kleiner is dan 5 of groter dan 15.

U kunt de methode or() gebruiken, net als de operator || in Java, om ervoor te zorgen dat ten minste één van de voorwaarden true retourneert.

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."); } } }

De methode or() controleert of een getal aan ten minste één van de opgegeven voorwaarden voldoet. Dit is nuttig wanneer het voldoen aan slechts één criterium voldoende is.

NEGATE Voorwaarde

Stel dat u moet controleren of een string niet leeg is.

U kunt de methode negate() gebruiken, net als de operator ! in Java, om het resultaat van een voorwaarde om te keren.

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."); } } }

De methode negate() keert een voorwaarde om. Als de oorspronkelijke voorwaarde true retourneert, zal de omgekeerde versie false retourneren, en omgekeerd.

1. Wat is het primaire doel van de functionele interface Predicate in Java?

2. Wat zal de uitvoer zijn van de volgende code?

question mark

Wat is het primaire doel van de functionele interface Predicate in Java?

Select the correct answer

question mark

Wat zal de uitvoer zijn van de volgende code?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 4
some-alt