Java Stream Filter

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Java Streams bieten uns eine Möglichkeit, Daten auf effiziente und prägnante Weise zu verarbeiten. Die filter()-Methode von Streams ermöglicht es uns, Elemente aus einem gegebenen Stream anhand einer Bedingung oder eines Prädikats auszuschließen. In diesem Lab werden wir lernen, wie die filter()-Methode verwendet wird und wie Elemente aus einem Stream in Java gefiltert werden.

Erstellen eines Streams von ganzen Zahlen

Lassen Sie uns einen Stream von ganzen Zahlen erstellen und die geraden Zahlen daraus ausschließen. Wir werden eine Liste von ganzen Zahlen deklarieren, sie in einen Stream umwandeln und dann die filter()-Methode verwenden, um die geraden Zahlen auszuschließen.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        Stream<Integer> stream = numbers.stream();

        Stream<Integer> evenNumbers = stream.filter(i -> i % 2 == 0);

        List<Integer> result = evenNumbers.collect(Collectors.toList());

        System.out.println(result); // Ausgabe: [2, 4, 6, 8, 10]
    }
}

Im obigen Code deklarieren wir eine Liste von ganzen Zahlen, wandeln sie mit der stream()-Methode in einen Stream um und filtern dann die geraden Zahlen mit der filter()-Methode aus.

Erstellen eines Streams von Zeichenketten

Lassen Sie uns einen Stream von Zeichenketten erstellen und die Zeichenketten, die einen bestimmten Buchstaben enthalten, daraus ausschließen. Wir werden eine Liste von Zeichenketten deklarieren, sie in einen Stream umwandeln und dann die filter()-Methode verwenden, um die Zeichenketten auszuschließen, die einen bestimmten Buchstaben enthalten.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("hello", "world", "java", "stream", "filter");
        Stream<String> stream = words.stream();

        char letter = 'l';

        Stream<String> filteredWords = stream.filter(s -> s.indexOf(letter)!= -1);

        List<String> result = filteredWords.collect(Collectors.toList());

        System.out.println(result); // Ausgabe: [hello, world, filter]
    }
}

Im obigen Code deklarieren wir eine Liste von Zeichenketten, wandeln sie mit der stream()-Methode in einen Stream um und filtern dann die Zeichenketten, die den Buchstaben 'l' enthalten, mit der filter()-Methode aus.

Erstellen eines Streams von benutzerdefinierten Objekten

Lassen Sie uns einen Stream von benutzerdefinierten Objekten erstellen und die Objekte anhand einer Bedingung ausschließen. Wir werden eine Liste von benutzerdefinierten Objekten deklarieren, sie in einen Stream umwandeln und dann die filter()-Methode verwenden, um die Objekte anhand einer Bedingung auszuschließen.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamFilter {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("John", 25),
                new Person("Sarah", 30),
                new Person("Mike", 35),
                new Person("Emma", 40)
        );

        Stream<Person> stream = people.stream();

        Stream<Person> filteredPeople = stream.filter(p -> p.getAge() > 30);

        List<Person> result = filteredPeople.collect(Collectors.toList());

        System.out.println(result); // Ausgabe: [Mike{name='Mike', age=35}, Emma{name='Emma', age=40}]
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return name + "{name='" + name + '\'' + ", age=" + age + '}';
    }
}

Im obigen Code deklarieren wir eine Liste von benutzerdefinierten Objekten vom Typ Person, wandeln sie mit der stream()-Methode in einen Stream um und filtern dann die Objekte, deren Alter größer als 30 ist, mit der filter()-Methode aus.

Zusammenfassung

In diesem Lab haben wir gelernt, wie die filter()-Methode von Java Streams verwendet wird, um Elemente anhand einer Bedingung oder eines Prädikats auszuschließen. Wir haben an der Filterung von Streams von ganzen Zahlen, Zeichenketten und benutzerdefinierten Objekten mit der filter()-Methode gearbeitet.