Stream takeWhile / dropWhile
Prendi o scarta elementi da uno stream in base a un predicato.
Confronto Codice
✕ Java 8
List<Integer> result = new ArrayList<>();
for (int n : sorted) {
if (n >= 100) break;
result.add(n);
}
// no stream equivalent in Java 8
✓ Java 9+
var result = sorted.stream()
.takeWhile(n -> n < 100)
.toList();
// or: .dropWhile(n -> n < 10)
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Cortocircuito
Smette di elaborare non appena il predicato fallisce.
Adatto alla pipeline
Si concatena naturalmente con altre operazioni stream.
Dichiarativo
takeWhile si legge come in inglese: 'prendi mentre meno di 100'.
Approccio Vecchio
Loop manuale
Approccio Moderno
takeWhile/dropWhile
Dal JDK
9
Difficoltà
Principiante
Supporto JDK
Stream takeWhile / dropWhile
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
takeWhile() restituisce elementi finché il predicato è vero e si ferma al primo falso. dropWhile() salta gli elementi finché è vero e restituisce il resto. Entrambi funzionano meglio su stream ordinati.
Documentazione Correlata