Avatar ·

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?