在 Java 中將 Stream 轉換為列表

Mohammad Irfan 2023年1月30日 2022年4月22日
  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.Stream;
import java.util.stream.Collectors;
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.Stream;
import java.util.stream.Collectors;
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.Stream;
import java.util.stream.Collectors;
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.Stream;
import java.util.stream.Collectors;
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