Stream takeWhile / dropWhile
Pegue ou descarte elementos de um stream com base em um predicado.
Comparação de Código
✕ 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)
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Curto-circuito
Para o processamento assim que o predicado falha.
Compatível com pipeline
Encadeie com outras operações de stream naturalmente.
Declarativo
takeWhile lê-se de forma natural: 'pegue enquanto for menor que 100'.
Abordagem Antiga
Loop manual
Abordagem Moderna
takeWhile/dropWhile
Desde o JDK
9
Dificuldade
Iniciante
Suporte JDK
Stream takeWhile / dropWhile
Disponível
Amplamente disponível desde o JDK 9 (setembro de 2017)
Como funciona
takeWhile() retorna elementos enquanto o predicado for verdadeiro e para no primeiro falso. dropWhile() pula elementos enquanto for verdadeiro e retorna o restante. Ambos funcionam melhor em streams ordenados.
Documentação Relacionada