Como filtrar uma coleção em Java por condição (predicado)?
Olá a todos! Sou novo em Java e me deparei com o seguinte problema: tenho uma lista de objetos `Person` com campos `name` e `age`. Preciso obter apenas aqueles com mais de 18 anos. Sei que posso usar um loop `for` e adicionar os elementos que atendem à condição em uma nova lista, mas isso parece complicado. Ouvi dizer que no Java 8 surgiram streams e lambdas, mas ainda não entendi como usá-los para filtrar coleções.
Aqui está um exemplo do meu código:
```java
List people = new ArrayList<>();
people.add(new Person("Alice", 22));
people.add(new Person("Bob", 17));
people.add(new Person("Charlie", 19));
// Como obter a lista de maiores de idade?
// Por enquanto faço assim:
List adults = new ArrayList<>();
for (Person p : people) {
if (p.getAge() >= 18) {
adults.add(p);
}
}
```
Isso funciona, mas o código fica longo, especialmente se for necessário filtrar por diferentes condições. Existe uma maneira mais elegante? Talvez algum método como `filter()` ou uma biblioteca Apache Commons?