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

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

07.07.2022
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.

Kostenlos programmieren lernen

  • Interaktiv Python & Java lernen
  • Kurse von echten Experten erstellt
  • Individuelle Hilfe, wenn du nicht weiterkommst
Kostenlos registrieren

Keine Zahlungsdaten notwendig



Bislang gibt es keine Kommentare. Markier dein Revier und sei der Erste!

Schreibe einen Kommentar

Das könnte dich auch interessieren

Arrow-up