Java Stream filter: Alles über Java Stream.filter()!

    Avatarbild von Preet Sanghavi
    Preet Sanghavi

    veröffentlicht am: 07.07.2022
    zuletzt aktualisiert am: 05.02.2023

    Java Stream filter: So verwendest du die Java Stream.filter()-Methode!

    Java unterstützt mehrere fortgeschrittene Techniken, mit denen das volle Potenzial von Streams und Lambda-Ausdrücken genutzt werden kann. Eine dieser Methoden ist die Java Stream filter()-Methode, die Daten aus einem Stream entgegennimmt und eine neue Liste, Sammlung oder Array-Liste erzeugt, nachdem die Elemente anhand der angegebenen Bedingung gefiltert wurden.

    In diesem Beitrag wird die Funktionsweise der Java Stream filter()-Methode anhand von geeigneten Beispielen erläutert. So, lass uns loslegen!

    Die Java Stream filter()-Methode im großen Guide

    Bei der Arbeit mit Streams verwenden die Java-Entwickler meist die Stream filter() Methode. Die Java Stream filter()-Methode iteriert durch den Stream und filtert die Elemente heraus, die der definierten Bedingung oder dem Lambda-Ausdruck entsprechen. Es handelt sich um eine Operation, die in der Mitte der Stream-Schnittstelle stattfindet.

    Syntax

    Stream<T> filter(Predicate<? super T> condition)

    Hier ist Stream eine Schnittstelle, Predicate ist eine funktionale Schnittstelle, die einen Lambda-Ausdruck oder eine Test-Bedingung darstellt, filter() ist eine zwischengeschaltete Stream-Operation, die zum Herausfiltern der Elemente aus dem gegebenen Stream verwendet wird.

    Werfen wir nun einen Blick auf einige Beispiele für die Implementierung der Java Stream filter() Methode.

    Beispiel 1: Verwendung eines Lambda-Ausdrucks mit der Java Stream filter()-Methode

    Zunächst werden wir die Klassen java.util.Arrays und java.util.List in unser Programm importieren:

    import java.util.Arrays;
    import java.util.List;

    Im nächsten Schritt erstellen wir mit der Methode Arrays.asList() eine Liste fester Größe und übergeben ihr einige Zahlen als Elemente. Danach rufen wir die Java-Methode list.stream().filter() auf und übergeben den Lambda-Ausdruck y -> y % 4 == 0 als Inline-Prädikat:

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
        public static void main(String args[]) {
            List < Integer > list = Arrays.asList(45, 32, 16, 35, 28, 29, 56);
            list.stream().filter(y - > y % 4 == 0).forEach(System.out::println);
        }
    }

    Wenn die Operation der Iteration über den Zahlenstrom beginnt, werden alle Zahlen, die den hinzugefügten Ausdruck y -> y % 4 == 0 erfüllen, aus dem Stream herausgesucht und im Konsolenfenster ausgegeben:

    In diesem Tutorial schauen wir uns die filter-Method an, welche mit verschiedenen Datenstrukturen (engl. Data Structures) und Elementen (elements) verwendet werden kann.

    Beispiel 2: Filtern und Sammeln von Elementen in einer Liste mit der Java Stream filter() Methode

    Man kann die Java-Stream-Methode filter() auch verwenden, um Listenelemente auf der Grundlage einer Bedingung oder eines Lambda-Ausdrucks zu filtern und dann die abgerufene Sammlung in einer anderen Liste zu speichern.

    Dazu muss man zunächst die Klasse java.util.stream.Collectors importieren:

    import java.util.stream.Collectors;

    Dann werden wir im selben Programm nur die Methode collect(Collectors.toList()) verwenden, um den Strom der gefilterten Zahlen als Vielfache von 4 in einem neuen Integer-Typ list zu sammeln:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class Main {
        public static void main(String args[]) {
            List < Integer > list = Arrays.asList(45, 32, 16, 35, 28, 29, 56);
            List < Integer > vielfaches = list.stream().filter(y - > y % 4 == 0).collect(Collectors.toList());
            System.out.println(vielfaches);
    
        }
    }

    Die gegebene Ausgabe bedeutet, dass wir die Vielfachen von 4 mit Hilfe der Java Stream filter() Methode erfolgreich gefiltert und in einer neuen Liste gesammelt haben:

    Seit Java 8 bietet uns Java die Collections und durch das Java Package java.util auch sogenannte The Stream Operations wie aslist an!

    Beispiel 3: Verwendung eines benutzerdefinierten Prädikats mit der Java Stream filter()-Methode

    Wir werden nun ein Custom Predicate anstelle des Lambda-Ausdrucks verwenden. Zu diesem Zweck importieren wir die Klasse java.util.function.Predicate:

    import java.util.function.Predicate;

    Als nächstes erstellen wir die gewünschte Liste von Zahlen. Danach definieren wir eine testBedingung, indem wir die Java Methode public boolean test() überschreiben, um zu prüfen, ob der Java Modulus % einer Zahl gleich Null ist oder nicht. Diese Methode wird true zurückgeben, wenn die Zahl ein Vielfaches von 4 ist; andernfalls wird der Rückgabewert auf false gesetzt:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.function.Predicate;
    
    public class Main {
        public static void main(String args[]) {
            List < Integer > list = Arrays.asList(45, 32, 16, 35, 28, 29, 56);
            Predicate < Integer > testBedingung = new Predicate < Integer > () {
                @Override
                public boolean test(Integer y) {
                    if (y % 4 == 0) {
                        return true;
                    }
                    return false;
                }
            };
            list.stream().filter(testBedingung).forEach(System.out::println);
    
        }
    }

    Bei der Ausführung des oben genannten Programms wird die in der Methode list.stream().filter() angegebene testBedingung verwendet, um die Vielfachen von 4 aus der erstellten list zu holen. Erfahre mehr über boolesche Werte in Java oder auch über die Override Annotation.

    Wir können auch eigene Bedingungen erstellen!

    Das waren alle wesentlichen Informationen über die Java Stream filter() Methode. Du kannst bei Bedarf noch weiter recherchieren.

    Zusammenfassung: Java Stream filter – die Java Stream.filter()-Methode

    Die Java Stream filter()-Methode iteriert durch den Stream und filtert die Elemente heraus, die nicht der definierten Bedingung oder dem Lambda-Ausdruck entsprechen. Es handelt sich um eine Operation, die in der Mitte der Stream-Schnittstelle stattfindet. Man kann die Java Stream filter()-Methode mit Lambda-Ausdrücken und Testbedingungen verwenden, um Elemente zu filtern und sie in einer neuen Sammlung zu speichern. In diesem Beitrag wurde die Funktionsweise der filter()-Methode von Java Stream anhand geeigneter Beispiele erläutert.

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Java und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig