Javaでストリーミング
ストリームは、集約操作をサポートするソースからのオブジェクトのシーケンスを表します。ストリームの特徴は次のとおりです-
-
要素のシーケンス −ストリームは、特定のタイプの要素のセットを順番に提供します。ストリームはオンデマンドで要素を取得/計算します。要素を保存することはありません。
-
ソース − Streamは、コレクション、配列、またはI/Oリソースを入力ソースとして受け取ります。
-
集計操作 − Streamは、フィルター、マップ、制限、削減、検索、一致などの集約操作をサポートします。
-
パイプライン −ほとんどのストリーム操作は、結果をパイプライン化できるようにストリーム自体を返します。これらの操作は中間操作と呼ばれ、その機能は入力を受け取り、処理して、出力をターゲットに返すことです。 collect()メソッドは、ストリームの終わりをマークするためにパイプライン操作の最後に通常存在するターミナル操作です。
-
自動反復 −明示的な反復が必要なコレクションとは対照的に、ストリーム操作は、提供されたソース要素に対して内部的に反復を実行します。
例
例を見てみましょう-
import java.util.Collection; import java.util.TreeSet; import java.util.stream.Collectors; import java.util.stream.Stream; public class Demo { public static void main(String[] args) { Stream<String> stream = Stream.of("25", "10", "15", "20", "25"); Collection<String> collection = stream.collect(Collectors.toCollection(TreeSet::new)); System.out.println("Collection = "+collection); } }
出力
Collection = [100, 130, 150, 20, 200, 50, 80]
例
ここで、Javaストリームcounting()メソッドを使用してストリーム内の要素の数を数えましょう-
import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Demo { public static void main(String[] args) { Stream<String> stream = Stream.of("Kevin", "Jofra","Tom", "Chris", "Liam"); // count long count = stream.collect(Collectors.counting()); System.out.println("Number of elements in the stream = "+count); } }
出力
Number of elements in the stream = 5
-
JavaのJavaストリームコレクタtoCollection()
JavaのCollectorsクラスのtoCollection()メソッドは、入力要素を新しいコレクションに遭遇順に蓄積するコレクターを返します。構文は次のとおりです- static <T,C extends Collection<T>> Collector<T,?,C> toCollection(Supplier<C> collectionFactory) ここで、T-は入力要素のタイプ、Cは結果のコレクションのタイプ、Supplierは結果のサプライヤー、コレクションファクトリは適切なタイプの新しい空のコレクションを返すサプライヤーです 例
-
コード例を含むJava8Streamsチュートリアル
このブログ投稿では、Java 8 Streamsの機能について説明し、さまざまなコード例を提供します。 Java Streamsは関数型プログラミングをJavaにもたらし、Java 8以降でサポートされているため、古いバージョンのJavaを使用している場合は、JavaStreamsを使用するためにJava8にアップグレードする必要があります。 Javaストリームを使用する理由 ストリームの利点のいくつか: ストリームを使用すると、より効率的なJavaプログラマーになります(ほんの数行のコードで、ストリームを使用して実際にかなり多くのことを達成できることがわかります)。 使い捨て関数の一種