Filtern von Kollektionen mit Streams
Das Filtern ist eine der häufigsten Operationen, die mit der Java Stream API auf Kollektionen durchgeführt werden. Das Filtern ermöglicht es Ihnen, eine Teilmenge von Elementen aus einer Kollektion basierend auf einem gegebenen Prädikat auszuwählen.
Anwenden von Filtern
Die filter()
-Methode wird verwendet, um einen Filter auf einen Stream anzuwenden. Diese Methode nimmt einen Lambda-Ausdruck oder eine Methodenreferenz als Argument, das die Filterbedingung darstellt.
List<String> names = Arrays.asList("John", "Jane", "Bob", "Alice");
Stream<String> filteredNames = names.stream()
.filter(name -> name.startsWith("J"));
filteredNames.forEach(System.out::println);
Im obigen Beispiel erstellen wir einen Stream aus einer Liste von Namen und verwenden dann die filter()
-Methode, um nur die Namen auszuwählen, die mit dem Buchstaben "J" beginnen.
Verkettung mehrerer Filter
Sie können mehrere filter()
-Aufrufe verketten, um mehrere Filterbedingungen auf einen Stream anzuwenden.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Stream<Integer> filteredNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.filter(n -> n > 5);
filteredNumbers.forEach(System.out::println);
In diesem Beispiel filtern wir zunächst die Zahlen, um nur die geraden Zahlen auszuwählen, und wenden dann einen zweiten Filter an, um nur die geraden Zahlen größer als 5 auszuwählen.
Kombinieren von Filtern mit anderen Operationen
Das Filtern kann mit anderen Stream-Operationen wie Abbilden, Sortieren und Reduzieren kombiniert werden, um komplexere Daten Transformationen zu erstellen.
List<Person> persons = Arrays.asList(
new Person("John", 30),
new Person("Jane", 25),
new Person("Bob", 35),
new Person("Alice", 28)
);
List<String> youngAdultNames = persons.stream()
.filter(p -> p.getAge() >= 18 && p.getAge() < 30)
.map(Person::getName)
.collect(Collectors.toList());
System.out.println(youngAdultNames);
In diesem Beispiel filtern wir zunächst die Liste der Person
-Objekte, um nur die jungen Erwachsenen (zwischen 18 und 30 Jahren alt) auszuwählen, dann bilden wir die Name
-Eigenschaft jedes Person
-Objekts ab und sammeln schließlich die Ergebnisse in einer neuen Liste.
Indem Sie die Macht des Filterns mit der Java Stream API verstehen, können Sie Ihre Datenkollektionen effektiv manipulieren und verarbeiten. Im nächsten Abschnitt werden wir weitere praktische Beispiele für die Anwendung von Filtern untersuchen.