Predicaat: 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
1234567891011121314151617package 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
1234567891011121314151617181920212223package 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
1234567891011121314151617181920212223package 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
1234567891011121314151617181920package 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?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.33
Predicaat: 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
1234567891011121314151617package 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
1234567891011121314151617181920212223package 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
1234567891011121314151617181920212223package 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
1234567891011121314151617181920package 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?
Bedankt voor je feedback!