Java でストリームをリストに変換する
-
Java の
collect()
メソッドを使用してストリームをリストに変換する -
Java の
toCollection()
メソッドを使用してストリームをリストに変換する -
Java で
forEach()
メソッドを使用してストリームをリストに変換する -
Java の
toArray()
メソッドを使用してストリームをリストに変換する
このチュートリアルでは、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.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()
メソッドを使用してストリームをリストに変換する
この例は、Collectors.toCollection()
メソッドの代わりに Collector.toList()
メソッドを使用したことを除いて、前の例と似ています。
Collector クラスには、toCollection()
と呼ばれるメソッドがあります。このメソッドは、入力アイテムを検出された順序で新しいコレクションに収集するコレクターを返します。以下のサンプルコードを見てください。
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 要素を 1つずつリストに追加しました。Stream
には、入力 Stream のすべての要素に対して実行する forEach()
と呼ばれるメソッドがあります。
以下のサンプルコードを見てください。
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()
メソッドを使用して新しく作成した配列をリストに変換し、リストを取得しました。
以下のコードを見てください。
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 8 ストリームのプロパティによる区別
- Java で Iterable を Stream に変換する
- Java での Stream Reduce 操作
- Java のストリームフィルター
- Java でリストをマップに変換する
- Java で配列をストリームに変換する方法