在 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