Filtre de flux Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les flux Java nous offrent un moyen de traiter des données de manière efficace et concise. La méthode filter() des flux nous permet de filtrer des éléments à partir d'un flux donné sur la base d'une condition ou d'un prédicat. Dans ce laboratoire, nous allons apprendre à utiliser la méthode filter() et à filtrer des éléments à partir d'un flux en Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ProgrammingTechniquesGroup -.-> java/lambda("Lambda") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/collections_methods -.-> lab-117954{{"Filtre de flux Java"}} java/lambda -.-> lab-117954{{"Filtre de flux Java"}} java/stream -.-> lab-117954{{"Filtre de flux Java"}} end

Créer un flux d'entiers

Créeons un flux d'entiers et filtrons les nombres pairs à partir de celui-ci. Nous allons déclarer une liste d'entiers, la convertir en un flux, puis utiliser la méthode filter() pour filtrer les nombres pairs.

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); // Sortie : [2, 4, 6, 8, 10]
    }
}

Dans le code ci-dessus, nous déclarons une liste d'entiers, la convertissons en un flux en utilisant la méthode stream(), puis filtrons les nombres pairs en utilisant la méthode filter().

Créer un flux de chaînes de caractères

Créeons un flux de chaînes de caractères et filtrons les chaînes qui contiennent une lettre spécifique. Nous allons déclarer une liste de chaînes de caractères, la convertir en un flux, puis utiliser la méthode filter() pour filtrer les chaînes qui contiennent une lettre spécifique.

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); // Sortie : [hello, world, filter]
    }
}

Dans le code ci-dessus, nous déclarons une liste de chaînes de caractères, la convertissons en un flux en utilisant la méthode stream(), puis filtrons les chaînes qui contiennent la lettre 'l' en utilisant la méthode filter().

Créer un flux d'objets personnalisés

Créeons un flux d'objets personnalisés et filtrons les objets sur la base d'une condition. Nous allons déclarer une liste d'objets personnalisés, la convertir en un flux, puis utiliser la méthode filter() pour filtrer les objets sur la base d'une condition.

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); // Sortie : [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 + '}';
    }
}

Dans le code ci-dessus, nous déclarons une liste d'objets personnalisés du type Person, la convertissons en un flux en utilisant la méthode stream(), puis filtrons les objets dont l'âge est supérieur à 30 en utilisant la méthode filter().

Sommaire

Dans ce laboratoire, nous avons appris à utiliser la méthode filter() des flux Java pour filtrer des éléments sur la base d'une condition ou d'un prédicat. Nous avons travaillé sur le filtrage de flux d'entiers, de chaînes de caractères et d'objets personnalisés en utilisant la méthode filter().