Filtro de flujos de Java

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Los flujos de Java nos proporcionan una manera de procesar datos de manera eficiente y concisa. El método filter() de los flujos nos permite filtrar elementos de un flujo dado basados en una condición o un predicado. En este laboratorio, aprenderemos cómo usar el método filter() y filtrar elementos de un flujo 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{{"Filtro de flujos de Java"}} java/lambda -.-> lab-117954{{"Filtro de flujos de Java"}} java/stream -.-> lab-117954{{"Filtro de flujos de Java"}} end

Crear un flujo de enteros

Vamos a crear un flujo de enteros y filtrar los números pares de él. Declararemos una lista de enteros, la convertiremos en un flujo y luego usaremos el método filter() para filtrar los números pares.

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

En el código anterior, declaramos una lista de enteros, la convertimos en un flujo usando el método stream() y luego filtramos los números pares usando el método filter().

Crear un flujo de cadenas

Vamos a crear un flujo de cadenas y filtrar las cadenas que contengan una letra específica de él. Declararemos una lista de cadenas, la convertiremos en un flujo y luego usaremos el método filter() para filtrar las cadenas que contengan una letra específica.

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

En el código anterior, declaramos una lista de cadenas, la convertimos en un flujo usando el método stream() y luego filtramos las cadenas que contienen la letra 'l' usando el método filter().

Crear un flujo de objetos personalizados

Vamos a crear un flujo de objetos personalizados y filtrar los objetos basados en una condición. Declararemos una lista de objetos personalizados, la convertiremos en un flujo y luego usaremos el método filter() para filtrar los objetos basados en una condición.

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

En el código anterior, declaramos una lista de objetos personalizados del tipo Person, la convertimos en un flujo usando el método stream() y luego filtramos los objetos cuya edad es mayor que 30 usando el método filter().

Resumen

En este laboratorio, aprendimos cómo usar el método filter() de los flujos de Java para filtrar elementos basados en una condición o un predicado. Trabajamos en la filtración de flujos de enteros, cadenas y objetos personalizados usando el método filter().