takeWhile / dropWhile na strumieniu
Pobieraj lub pomijaj elementy strumienia na podstawie predykatu.
Porównanie kodu
✕ 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)
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Wczesne przerwanie
Przestaje przetwarzać gdy predykat nie jest spełniony.
Przyjazny dla potoku
Łączy się z innymi operacjami strumieni naturalnie.
Deklaratywny
takeWhile czyta się naturalnie — 'pobieraj dopóki mniej niż 100'.
Stare podejście
Ręczna pętla
Nowoczesne podejście
takeWhile/dropWhile
Od JDK
9
Poziom trudności
Początkujący
Wsparcie JDK
takeWhile / dropWhile na strumieniu
Dostępne
Szeroko dostępne od JDK 9 (wrzesień 2017)
Jak to działa
takeWhile() zwraca elementy dopóki predykat jest prawdziwy i zatrzymuje się przy pierwszym fałszu. dropWhile() pomija elementy dopóki prawda i zwraca resztę. Oba działają najlepiej na uporządkowanych strumieniach.
Powiązana dokumentacja
Dowód