Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Filtern von Elementen mit der Filter()-Methode | Intermediate-Operationen im Stream-API
Stream-API

bookFiltern von Elementen mit der Filter()-Methode

Beim Arbeiten mit Datensammlungen in Java besteht häufig die Notwendigkeit, bestimmte Elemente zu extrahieren, die bestimmte Bedingungen erfüllen. Traditionell erfordert dies Schleifen und Bedingungsanweisungen, wodurch der Code umfangreicher wird. Hier kommt die filter()-Methode zum Einsatz.

Sie haben diese Methode bereits in unseren Beispielen verwendet, aber wir haben noch nicht im Detail besprochen, welches Argument sie erwartet. Sie akzeptiert eine funktionale Schnittstelle Predicate<T>, die definiert, ob ein Element im resultierenden Stream enthalten sein soll.

Stream<T> filter(Predicate<? super T> predicate);

Hierbei ist T der Typ der Elemente im Stream, und Predicate<? super T> ist die Filterbedingung, die verwendet wird, um jedes Element zu überprüfen.

Praktische Anwendung

Angenommen, es gibt eine Liste von Mitarbeitern, jeweils mit einem name und yearsOfExperience im Unternehmen. Es sollen nur diejenigen ausgewählt werden, die seit mehr als 5 Jahren im Unternehmen sind, um ihnen einen Bonus oder zusätzliche Leistungen anzubieten.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Employee { private final String name; private final int yearsOfExperience; public Employee(String name, int yearsOfExperience) { this.name = name; this.yearsOfExperience = yearsOfExperience; } public String getName() { return name; } public int getYearsOfExperience() { return yearsOfExperience; } @Override public String toString() { return name + " (" + yearsOfExperience + " years)"; } } public class Main { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee("John", 6), new Employee("Sarah", 4), new Employee("Mike", 7), new Employee("Anna", 3), new Employee("Tom", 8) ); // Filtering employees with more than 5 years of experience List<Employee> experiencedEmployees = employees.stream() .filter(e -> e.getYearsOfExperience() > 5) .toList(); System.out.println("Experienced employees: " + experiencedEmployees); } }

In diesem Beispiel wird ein Stream von Mitarbeitern mit stream() erstellt. Anschließend werden mit der filter-Methode diejenigen Mitarbeiter herausgefiltert, die mehr als 5 Jahre Berufserfahrung haben.

Das Ergebnis ist eine neue Liste, die nur die Mitarbeiter enthält, welche diese Bedingung erfüllen.

Wann filter verwenden

In den meisten Fällen ist es sinnvoll, filter() am Anfang zu verwenden, um die Datenmenge für nachfolgende Operationen zu reduzieren. Dies verbessert die Leistung, da spätere Operationen auf einem kleineren Datensatz ausgeführt werden.

Beispiel

Wenn eine Liste von Mitarbeitern vorliegt und zunächst diejenigen mit mehr als 5 Jahren Berufserfahrung herausgefiltert werden sollen, bevor die verbleibenden Mitarbeiter in ein anderes Format umgewandelt werden, empfiehlt es sich, mit dem Filtern zu beginnen.

List<Employee> result = employees.stream()
        .filter(e -> e.getYearsOfExperience() > 5)  // First, `filter`
        .map(e -> e.getName())  // Then apply other operations
        .toList();

Wie Sie in diesem Beispiel sehen, wird die filter()-Methode vor der map()-Methode platziert, da dadurch zunächst die Anzahl der zu verarbeitenden Elemente reduziert wird. Es werden Mitarbeiter mit mehr als 5 Jahren Berufserfahrung gefiltert und anschließend deren Namen extrahiert.

Diese Reihenfolge der Operationen ist effizient, da sie eine unnötige Datenverarbeitung während der Transformation verhindert.

1. Was macht die filter()-Methode in der Stream API?

2. Welchen Argumenttyp akzeptiert die Methode filter()?

3. Was passiert, wenn Sie in der Methode filter() eine Bedingung verwenden, die immer false zurückgibt?

question mark

Was macht die filter()-Methode in der Stream API?

Select the correct answer

question mark

Welchen Argumenttyp akzeptiert die Methode filter()?

Select the correct answer

question mark

Was passiert, wenn Sie in der Methode filter() eine Bedingung verwenden, die immer false zurückgibt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.33

bookFiltern von Elementen mit der Filter()-Methode

Swipe um das Menü anzuzeigen

Beim Arbeiten mit Datensammlungen in Java besteht häufig die Notwendigkeit, bestimmte Elemente zu extrahieren, die bestimmte Bedingungen erfüllen. Traditionell erfordert dies Schleifen und Bedingungsanweisungen, wodurch der Code umfangreicher wird. Hier kommt die filter()-Methode zum Einsatz.

Sie haben diese Methode bereits in unseren Beispielen verwendet, aber wir haben noch nicht im Detail besprochen, welches Argument sie erwartet. Sie akzeptiert eine funktionale Schnittstelle Predicate<T>, die definiert, ob ein Element im resultierenden Stream enthalten sein soll.

Stream<T> filter(Predicate<? super T> predicate);

Hierbei ist T der Typ der Elemente im Stream, und Predicate<? super T> ist die Filterbedingung, die verwendet wird, um jedes Element zu überprüfen.

Praktische Anwendung

Angenommen, es gibt eine Liste von Mitarbeitern, jeweils mit einem name und yearsOfExperience im Unternehmen. Es sollen nur diejenigen ausgewählt werden, die seit mehr als 5 Jahren im Unternehmen sind, um ihnen einen Bonus oder zusätzliche Leistungen anzubieten.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Employee { private final String name; private final int yearsOfExperience; public Employee(String name, int yearsOfExperience) { this.name = name; this.yearsOfExperience = yearsOfExperience; } public String getName() { return name; } public int getYearsOfExperience() { return yearsOfExperience; } @Override public String toString() { return name + " (" + yearsOfExperience + " years)"; } } public class Main { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee("John", 6), new Employee("Sarah", 4), new Employee("Mike", 7), new Employee("Anna", 3), new Employee("Tom", 8) ); // Filtering employees with more than 5 years of experience List<Employee> experiencedEmployees = employees.stream() .filter(e -> e.getYearsOfExperience() > 5) .toList(); System.out.println("Experienced employees: " + experiencedEmployees); } }

In diesem Beispiel wird ein Stream von Mitarbeitern mit stream() erstellt. Anschließend werden mit der filter-Methode diejenigen Mitarbeiter herausgefiltert, die mehr als 5 Jahre Berufserfahrung haben.

Das Ergebnis ist eine neue Liste, die nur die Mitarbeiter enthält, welche diese Bedingung erfüllen.

Wann filter verwenden

In den meisten Fällen ist es sinnvoll, filter() am Anfang zu verwenden, um die Datenmenge für nachfolgende Operationen zu reduzieren. Dies verbessert die Leistung, da spätere Operationen auf einem kleineren Datensatz ausgeführt werden.

Beispiel

Wenn eine Liste von Mitarbeitern vorliegt und zunächst diejenigen mit mehr als 5 Jahren Berufserfahrung herausgefiltert werden sollen, bevor die verbleibenden Mitarbeiter in ein anderes Format umgewandelt werden, empfiehlt es sich, mit dem Filtern zu beginnen.

List<Employee> result = employees.stream()
        .filter(e -> e.getYearsOfExperience() > 5)  // First, `filter`
        .map(e -> e.getName())  // Then apply other operations
        .toList();

Wie Sie in diesem Beispiel sehen, wird die filter()-Methode vor der map()-Methode platziert, da dadurch zunächst die Anzahl der zu verarbeitenden Elemente reduziert wird. Es werden Mitarbeiter mit mehr als 5 Jahren Berufserfahrung gefiltert und anschließend deren Namen extrahiert.

Diese Reihenfolge der Operationen ist effizient, da sie eine unnötige Datenverarbeitung während der Transformation verhindert.

1. Was macht die filter()-Methode in der Stream API?

2. Welchen Argumenttyp akzeptiert die Methode filter()?

3. Was passiert, wenn Sie in der Methode filter() eine Bedingung verwenden, die immer false zurückgibt?

question mark

Was macht die filter()-Methode in der Stream API?

Select the correct answer

question mark

Welchen Argumenttyp akzeptiert die Methode filter()?

Select the correct answer

question mark

Was passiert, wenn Sie in der Methode filter() eine Bedingung verwenden, die immer false zurückgibt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
some-alt