在 Java 中将 Stream 转换为列表

Mohammad Irfan 2023年10月12日
  1. 在 Java 中使用 collect() 方法将流转换为列表
  2. 在 Java 中使用 toCollection() 方法将流转换为列表
  3. 在 Java 中使用 forEach() 方法将流转换为列表
  4. 在 Java 中使用 toArray() 方法将流转换为列表
在 Java 中将 Stream 转换为列表

本教程介绍了 Java 中 Stream 到 List 的转换。

Stream 是对象的集合。Stream 不存储任何数据,因此它不是数据结构。

Stream 被添加到 Java 8 版本中,而 List 是一个存储有序集合的接口。在本教程中,我们将研究将 Stream 转换为 List。

Java 有以下方法可以用来完成我们的任务:

  • 使用 collect() 方法进行转换
  • 使用 toCollection() 方法进行转换
  • 使用 forEach() 方法进行转换
  • 使用 toArray() 方法进行转换

在 Java 中使用 collect() 方法将流转换为列表

Stream collect() 操作是一个终端操作。终端操作意味着 Stream 已被消费并且在此操作之后无法进一步使用。

这个方法的语法是:

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

此方法将 Collector 对象作为参数。

Collector 类用于将 Stream 的元素收集到一个集合中。此类具有 toList() 方法,可将 Stream 转换为 List。

现在让我们看一个代码示例:

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);
    }
  }
}

输出:

chair
dinning table
study table
coffee table
sofa

在 Java 中使用 toCollection() 方法将流转换为列表

此示例与上一个示例类似,只是我们使用了 Collector.toList() 方法而不是 Collectors.toCollection() 方法。

Collector 类有一个名为 toCollection() 的方法,该方法返回一个 Collector,它将输入项按照遇到的顺序收集到一个新的 Collection 中。看下面的示例代码:

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);
    }
  }
}

输出:

chair
dinning table
study table
coffee table
sofa

在 Java 中使用 forEach() 方法将流转换为列表

在这个例子中,我们首先创建了一个空的 ArrayList,然后使用 forEach() 方法将每个 Stream 元素一个一个添加到 List 中。Stream 有一个名为 forEach() 的方法,它对输入 Stream 的所有元素执行。

看下面的示例代码:

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);
    }
  }
}

输出:

chair
dinning table
study table
coffee table
sofa

在 Java 中使用 toArray() 方法将流转换为列表

在这个例子中,我们首先使用 toArray() 方法将 Stream 转换为一个数组。之后,我们使用 asList() 方法将新创建的数组转换为 List 以获取列表。

看下面的代码:

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);
    }
  }
}

输出:

chair
dinning table
study table
coffee table
sofa

相关文章 - Java Stream

相关文章 - Java List