Convertir Stream a lista en Java

Mohammad Irfan 12 octubre 2023
  1. Convertir secuencia en lista usando el método collect() en Java
  2. Convertir secuencia en lista usando el método toCollection() en Java
  3. Convertir Stream a lista usando el método forEach() en Java
  4. Convertir secuencia en lista usando el método toArray() en Java
Convertir Stream a lista en Java

Este tutorial presenta la conversión de Stream a List en Java.

Un Stream es una colección de objetos. Un Stream no almacena ningún dato y, por lo tanto, no es una estructura de datos.

El Stream se agregó a la versión de Java 8, mientras que una Lista es una interfaz que almacena colecciones ordenadas. En este tutorial, veremos cómo convertir una secuencia en una lista.

Java tiene las siguientes formas en las que podemos lograr nuestra tarea:

  • Convertir usando el método collect()
  • Convertir utilizando el método toCollection()
  • Convertir utilizando el método forEach()
  • Convertir utilizando el método toArray()

Convertir secuencia en lista usando el método collect() en Java

La operación Stream collect() es una operación de terminal. Una operación de terminal significa que Stream se consume y no se puede usar más después de esta operación.

La sintaxis de este método es:

collect(Collector<? super T, A, R> collector)

Este método toma un objeto Collector como argumento.

La clase Collector se utiliza para recopilar los elementos de Stream en una colección. Esta clase tiene el método toList(), que convierte el Stream en una Lista.

Veamos ahora un ejemplo de código:

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class SimpleTesting {
  public static void main(String args[]) {
    // declaring a stream
    Stream<String> furnitures =
        Stream.of("chair", "dinning table", "study table", "coffee table", "sofa");

    // changing stream to list
    List<String> furniture_list = furnitures.collect(Collectors.toList());

    // printing the list
    for (String furniture : furniture_list) {
      System.out.println(furniture);
    }
  }
}

Producción :

chair
dinning table
study table
coffee table
sofa

Convertir secuencia en lista usando el método toCollection() en Java

Este ejemplo es similar al anterior excepto que usamos el método Collector.toList() en lugar del método Collectors.toCollection().

La clase Collector tiene un método llamado toCollection() que devuelve un Collector que reúne los elementos de entrada en una nueva colección en el orden en que se encontraron. Mira el código de ejemplo a continuación:

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class SimpleTesting {
  public static void main(String args[]) {
    // declaring a stream
    Stream<String> furnitures =
        Stream.of("chair", "dinning table", "study table", "coffee table", "sofa");

    // changing stream to list
    List<String> furniture_list = furnitures.collect(Collectors.toCollection(ArrayList::new));

    // printing the list
    for (String furniture : furniture_list) {
      System.out.println(furniture);
    }
  }
}

Producción :

chair
dinning table
study table
coffee table
sofa

Convertir Stream a lista usando el método forEach() en Java

En este ejemplo, primero creamos una ArrayList vacía y luego usamos el método forEach() para agregar cada elemento Stream a la Lista uno por uno. El Stream tiene un método llamado forEach() que actúa sobre todos los elementos del Stream de entrada.

Mira el código de ejemplo a continuación:

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class SimpleTesting {
  public static void main(String args[]) {
    // declaring a stream
    Stream<String> furnitures =
        Stream.of("chair", "dinning table", "study table", "coffee table", "sofa");

    // declaring an empty arraylist
    ArrayList<String> furniture_list = new ArrayList<>();

    // adding elements one by one
    furnitures.forEach(furniture_list::add);

    // printing the list
    for (String furniture : furniture_list) {
      System.out.println(furniture);
    }
  }
}

Producción :

chair
dinning table
study table
coffee table
sofa

Convertir secuencia en lista usando el método toArray() en Java

En este ejemplo, primero convertimos el Stream en un arreglo usando el método toArray(). Después de esto, convertimos la matriz recién creada en una Lista usando el método asList() para obtener una lista.

Mira el código a continuación:

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class SimpleTesting {
  public static void main(String args[]) {
    // declaring a stream
    Stream<String> furnitures =
        Stream.of("chair", "dinning table", "study table", "coffee table", "sofa");

    // converting stream to array
    String[] furniture_array = furnitures.toArray(String[] ::new);

    // converting array to list
    List<String> furniture_list = Arrays.asList(furniture_array);

    // printing the list
    for (String furniture : furniture_list) {
      System.out.println(furniture);
    }
  }
}

Producción :

chair
dinning table
study table
coffee table
sofa

Artículo relacionado - Java Stream

Artículo relacionado - Java List