Cómo filtrar una colección en Java por condición (predicado)?
¡Hola a todos! Soy nuevo en Java y me encontré con este problema: tengo una lista de objetos `Person` con campos `name` y `age`. Necesito obtener solo aquellos que sean mayores de 18 años. Sé que puedo usar un bucle `for` y agregar los elementos que cumplan la condición a una nueva lista, pero se ve engorroso. He oído que en Java 8 aparecieron los streams y lambdas, pero aún no he descubierto cómo aplicarlos para filtrar colecciones.
Aquí hay un ejemplo de mi 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));
// ¿Cómo obtener la lista de mayores de edad?
// Por ahora lo hago así:
List adults = new ArrayList<>();
for (Person p : people) {
if (p.getAge() >= 18) {
adults.add(p);
}
}
```
Esto funciona, pero el código se vuelve largo, especialmente si necesito filtrar por diferentes condiciones. ¿Hay una forma más elegante? ¿Quizás algún método como `filter()` o la librería Apache Commons? ¿O cómo se hace correctamente?