Stream は、SQL ステートメントを使用してデータベースのデータをクエリするのと同様の直感的な方法を使用して、Java のセット操作と式の高レベルの抽象化を提供します。次に、この記事を通じて Java8 における Stream データ フローの知識を共有します。興味のある方は、Java8 で導入された、ラムダ式を多用する API です。 Stream は、SQL ステートメントを使用してデータベースのデータをクエリするのと同様の直感的な方法で、Java のセット操作と式の高レベルの抽象化を提供します。直感とは、開発者がコードを書くとき、結果を達成するための具体的な方法ではなく、望む結果が何であるかのみに集中すればよいことを意味します。この章では、新しいデータ処理 API が必要な理由、Collection と Stream の違い、および StreamAPI をコーディングに適用する方法を紹介します。
重複する要素をフィルタリングする Stream インターフェースは、要素のストリーム (ストリームによって生成された要素の hashCode メソッドと等しいメソッドに従って実装) を返す、distinct メソッドをサポートしています。
たとえば、次のコードはリスト内のすべての偶数をフィルターで除外し、重複がないことを確認します。
List<Dish> dishes = Dish.menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList());
指定された数の要素をスキップするStream は、最初の n 個の要素が破棄されたストリームを返す Skip(n) メソッドをサポートしています。ストリーム内の要素が n 未満の場合は、空のストリームが返されます。 limit(n)とskip(n)は相補的です
List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回 .collect(Collectors.toList()); dishSkip.forEach(System.out::println);
Streamは関数をパラメータとして受け取るmapメソッドをサポートしています。この関数は各要素に適用され、新しい要素にマップされます
List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());
要素の合計
List<Integer> numbers = Arrays.asList(3,4,5,1,2); int sum1 = numbers.stream().reduce(0,(a, b) -> a + b); System.out.println(sum1); int sum2 = numbers.stream().reduce(0,Integer::sum); System.out.println(sum2);
int max = numbers.stream().reduce(0,Integer::max); System.out.println(max);
りー
まとめ
以上がJava8におけるStreamデータフローの解析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。