Streams Начинающий

Брать или пропускать элементы из Stream на основе предиката.

✕ 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)
Заметили проблему в этом коде? Сообщите нам.
🎯

Оценка с коротким замыканием

Прекращает обработку, как только предикат не выполняется.

🔗

Совместимый с пайплайном

Естественно связывается с другими операциями Stream.

📖

Декларативный

takeWhile читается как естественный язык: 'брать, пока меньше 100'.

Старый подход
Ручной цикл
Современный подход
takeWhile/dropWhile
Начиная с JDK
9
Сложность
Начинающий
Stream takeWhile / dropWhile
Доступно

Широко доступно с JDK 9 (сент. 2017)

takeWhile() возвращает элементы, пока предикат истинен, и останавливается при первом ложном значении. dropWhile() пропускает элементы, пока предикат истинен, и возвращает остальные. Оба лучше работают с упорядоченными Stream.