Java8で導入されたStreamAPIの具体的な使い方を使い方を説明していきます。
まずそのStreamインスタンスの作成方法から見ていきましょう。
ListやSetからStreamを作成する場合
Collection インターフェース(List や Set など)の stream() メソッドを使用して、ストリームを作成します。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
Stream<String> stream = list.stream();
stream.forEach(System.out::println); // Apple, Banana, Cherry を出力
}
}
配列からStreamを作成する場合
Arrays.stream() メソッドを使用して、配列からストリームを作成します。
import java.util.Arrays;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
String[] array = {"Apple", "Banana", "Cherry"};
Stream<String> stream = Arrays.stream(array);
stream.forEach(System.out::println); // Apple, Banana, Cherry を出力
}
}
MapからStreamを作成する場合
Map からストリームを作成するには、entrySet(), keySet(), または values() メソッドを使用して、それぞれエントリ、キー、または値のセットを取得し、そのセットからストリームを作成します。
import java.util.Map;
import java.util.HashMap;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
// エントリのストリーム
Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
entryStream.forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
// キーのストリーム
Stream<String> keyStream = map.keySet().stream();
keyStream.forEach(System.out::println);
// 値のストリーム
Stream<Integer> valueStream = map.values().stream();
valueStream.forEach(System.out::println);
}
}
数値範囲からStreamを作成する場合
IntStream, LongStream, または DoubleStream の range() または rangeClosed() メソッドを使用して、数値範囲からストリームを作成します。
import java.util.stream.IntStream;
public class StreamExample {
public static void main(String[] args) {
// 1 から 5 までの IntStream
IntStream intStream = IntStream.rangeClosed(1, 5);
intStream.forEach(System.out::println); // 1, 2, 3, 4, 5 を出力
}
}
これらの例を通じて、さまざまなデータソースからJavaのStream APIを使用してストリームを作成する方法を確認できます。
次の記事でStreamに対する「中間操作」を説明します。