ホームページ  >  記事  >  Java  >  Java8におけるStreamデータフローの解析例

Java8におけるStreamデータフローの解析例

黄舟
黄舟オリジナル
2017-10-16 10:02:261365ブラウズ

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);

map操作

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);

maximum

int max = numbers.stream().reduce(0,Integer::max);
System.out.println(max);

minimum

りー

まとめ

以上がJava8におけるStreamデータフローの解析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。