Ce face Predicate.not
Predicate.not(p) returnează predicatul invers, ca p.negate(). Diferența este că primește direct o referință de metodă: Predicate.not(String::isBlank). Cu negate() ar trebui întâi o variabilă sau o conversie, pentru că String::isBlank.negate() nu compilează.
De obicei se importă static: import static java.util.function.Predicate.not;, ca să scrii filter(not(String::isBlank)), care se citește ca o propoziție.
Parametri
| Parametru | Descriere |
|---|---|
conditie |
Predicatul de inversat, de obicei o referință de metodă. |
Ce returnează
Un Predicate care dă true exact când conditie dă false.
Exemple
Exemplul 1: Rânduri care nu sunt goale
import java.util.List;
import java.util.function.Predicate;
public class Main {
public static void main(String[] args) {
List<String> randuri = List.of("Ana", " ", "Mihai", "", "Elena");
List<String> pline = randuri.stream().filter(Predicate.not(String::isBlank)).toList();
System.out.println(pline);
}
}
Rezultat
[Ana, Mihai, Elena]
Exemplul 2: Cu import static
Studenții care nu sunt în lista de absenți; absenti::contains este condiția, iar not o inversează.
import static java.util.function.Predicate.not;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<String> grupa = List.of("Ana", "Radu", "Ioana", "Dan");
Set<String> absenti = Set.of("Radu", "Dan");
System.out.println("Prezenți: " + grupa.stream().filter(not(absenti::contains)).toList());
}
}
Rezultat
Prezenți: [Ana, Ioana]
Greșeli frecvente
- Scrii
filter(!String::isBlank)saufilter(String::isBlank.negate()): niciuna nu compilează. FoloseștePredicate.not(String::isBlank). - Folosești
Predicate.notpe Java 8–10: metoda există doar din Java 11.
Comenzi înrudite
Predicate: O condiție: primește o valoare și răspunde true sau false prin metoda test; folosită de filter, removeIf, anyMatch.Predicate.and: Combină condiții: and (ambele adevărate), or (cel puțin una) și negate (condiția inversă).Stream.filter: Păstrează în stream doar elementele care îndeplinesc o condiție.String.strip: Elimină spațiile de la începutul și sfârșitul șirului; stripLeading/stripTrailing doar dintr-o parte.