Avatar ·

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?