Avatar ·

Wie filtere ich eine Collection in Java nach einer Bedingung (Prädikat)?

Hallo zusammen! Ich bin neu in Java und habe folgendes Problem: Ich habe eine Liste von `Person`-Objekten mit den Feldern `name` und `age`. Ich muss nur diejenigen erhalten, die älter als 18 Jahre sind. Ich weiß, dass ich mit einer `for`-Schleife durchgehen und passende Elemente in eine neue Liste einfügen kann, aber das sieht umständlich aus. Ich habe gehört, dass es in Java 8 Streams und Lambdas gibt, aber ich habe noch nicht verstanden, wie ich sie zum Filtern von Collections anwenden kann.\n\nHier ist ein Beispiel meines Codes:\n\n```java\nList people = new ArrayList<>();\npeople.add(new Person("Alice", 22));\npeople.add(new Person("Bob", 17));\npeople.add(new Person("Charlie", 19));\n\n// Wie bekomme ich eine Liste der Volljährigen?\n// Bisher mache ich es so:\nList adults = new ArrayList<>();\nfor (Person p : people) {\n if (p.getAge() >= 18) {\n adults.add(p);\n }\n}\n```\n\nDas funktioniert, aber der Code wird lang, besonders wenn ich nach verschiedenen Bedingungen filtern muss. Gibt es einen eleganteren Weg? Vielleicht eine Methode wie `filter()` oder die Apache Commons Bibliothek?