Java8でStreamを作成する方法

Java8でStreamを作成する方法

コレクションや配列からStreamを作成しますが、その他の方法でもStreamを作成することができます。

配列

配列からStreamを作成します。

String[] arr = {"1", "2"};
Stream<String> stream = Arrays.stream(arr);

Map

MapからStreamを作成します。mapはstreamメソッドがありませんのでentrySetメソッドでSetに変換してからStreamを作成します。

Map<String, String> map = new HashMap<>();
map.put("key", "value");
Stream<> stream = map.entrySet().stream();

List

ListからStreamを作成します。

List<Integer> list = new ArrayList<>();
list.add(1);
Stream<Integer> stream = list.stream();

可変長引数

Stream.ofメソッドに可変長引数を指定してStreamを作成します。

Stream<String> stream = Stream.of("a","b");

Stream.builder()

buildメソッドからStreamを作成します。

Stream.Bulder<Integer> builder = Stream.builder();
builder.add(1);
Stream<Integer> stream = builder.build();

Stream.generate()

Stream.generateメソッドは無限ストリームを作成します。その為明示的にlimitメソッドなどの中間操作で件数を指定する必要があります。

Stream<Double> stream = Stream.generate(() -> Math.random());

Stream.iterate()

Stream.iterateメソッドも無限ストリームを作成します。第一引数が初期値、第二引数が関数です。

Stream<Integer> stream = Stream.iterate(1, e -> e * 3);

StreamSupport.stream()

SpliteratorからStreamを作成します。

final List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
final Iterator iterator = list.iterator();
final Spliterator<Integer> spliterator =
  Spliterators.spliteratorUnknownSize(iterator, Spliterator.NONNULL);
StreamSupport.stream(spliterator, false).forEach(System.out::print); // 12

JavaのライブラリjacksonでJsonNodeの値が配列の場合にString型のListに変換する方法

Stream.concat()

ストリームとストリームを結合してストリームを返します。

List<String> list1 = new ArrayList<>();
list1.add("test1");
List<String> list2 = new ArrayList<>();
list2.add("test2");
Stream<String> ret = Stream.concat(list1.stream(),list2.stream());

IntStream.range()

IntStream.reangeメソッドはIntStreamを作成します。メソッドチェーンでboxedメソッドによりStreamを返します。

Stream<Integer> stream = IntStream.range(0, 3).boxed();

IntStream.rangeClosed()

IntStream.reangeClosedメソッドもIntStreamを作成します。メソッドチェーンでboxedメソッドによりStreamを返します。

IntStream.rangeClosed(0, 3).boxed();

Java8でIntStream.range()の使い方

コメント

タイトルとURLをコピーしました