Stream APIでの非同期処理

メソッド 概要 Since
java.util.stream.BaseStream#parallel 並列ストリームへの変換 1.8
java.util.Collection#parallelStream コレクション要素の並列ストリーム取得 1.8
java.util.SplittableRandom 乱数ストリームの生成 1.8
  • Stream API並列ストリーム処理はFork/Joinフレームワーク上に実装されている。ExecutorServiceとしてForkJoinPool.commonPool()が利用される。
  • Streamに対して Stream#parallel を実行すると、Streamの各要素は並列に実行される。 逆に Stream#sequential を実行すると、逐次実行となる。
    • parallel/sequential はStream全体に対する設定である。 特定の中間操作のみを並列・逐次実行のどちらかに切り替えて実行するようにはなっていない。
    • もしこのような処理を行うのなら、一度終端操作でStreamを閉じ、新たにStreamを作成する必要がある

参考

Stream instanceを取得

examples

// java.util.stream.Stream#of
Stream<String> stream = Stream.of("A", "B", "C")

// java.util.Arrays#stream
String<String> stream = Arrays.stream(new String[] {"A", "B", "C"})

// java.util.Collection#stream
List<String> list = Arrays.asList("A", "B", "C")
Stream<String> stream = list.stream();

// java.lang.CharSequence#chars
String str = "ABC";
IntStream streamf = str.chars()

Stream#forEach

Stream#flatMap

  • Java 8 flatMap example
  • Collectionの中にネストしたCollectionがある場合
  • mapはCollectionの要素を取り出して変換を行うメソッドで
  • flatMapはCollectionの要素を取り出してStreamへの変換を行う

References

results matching ""

    No results matching ""