Java でストリームをリストに変換する

Mohammad Irfan 2023年1月30日 2022年2月8日
  1. Java の collect() メソッドを使用してストリームをリストに変換する
  2. Java の toCollection() メソッドを使用してストリームをリストに変換する
  3. Java で forEach() メソッドを使用してストリームをリストに変換する
  4. Java の toArray() メソッドを使用してストリームをリストに変換する
Java でストリームをリストに変換する

このチュートリアルでは、Java での Stream のリストへの変換を紹介します。

ストリームはオブジェクトのコレクションです。ストリームはデータを保存しないため、データ構造ではありません。

Stream は Java 8 バージョンに追加されましたが、リストは順序付けられたコレクションを格納するインターフェイスです。このチュートリアルでは、ストリームをリストに変換する方法について説明します。

Java には、タスクを実行するための次の方法があります。

  • collect() メソッドを使用して変換する
  • toCollection() メソッドを使用して変換します
  • forEach() メソッドを使用して変換する
  • toArray() メソッドを使用して変換する

Java の collect() メソッドを使用してストリームをリストに変換する

Stream collect() 操作はターミナル操作です。ターミナル操作とは、ストリームが消費され、この操作の後でそれ以上使用できないことを意味します。

このメソッドの構文は次のとおりです。

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

このメソッドは、Collector オブジェクトを引数として取ります。

Collector クラスは、Stream の要素をコレクションに収集するために使用されます。このクラスには、ストリームをリストに変換する toList() メソッドがあります。

コード例を見てみましょう。

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() メソッドを使用してストリームをリストに変換する

この例は、Collectors.toCollection() メソッドの代わりに Collector.toList() メソッドを使用したことを除いて、前の例と似ています。

Collector クラスには、toCollection() と呼ばれるメソッドがあります。このメソッドは、入力アイテムを検出された順序で新しいコレクションに収集するコレクターを返します。以下のサンプルコードを見てください。

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 要素を 1つずつリストに追加しました。Stream には、入力 Stream のすべての要素に対して実行する forEach() と呼ばれるメソッドがあります。

以下のサンプルコードを見てください。

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() メソッドを使用して新しく作成した配列をリストに変換し、リストを取得しました。

以下のコードを見てください。

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