ストリームの使用に基づいて、ブログ(https://blog.csdn.net/cxh6863/article/details/102634781)を通過し、我々はもはや奇妙な流れは、バーの下に高度な使用法を学びます、ストリームをストリームしないようにすべきです。
-collect合計するパケット
シーン:
クラスでは、誰もが、すべてが性別に基づいて、その後、合計スコアをJavaでコードを使用する方法を、自分のスコアを持っています。
方法:
この方法は、マップに集めリストを収集するために使用し、その後、GROUPBYを使用して分類
GetSumを() -ゲットと
getMax()で-最大取得
getMinを() -最小取得
getAverageを() -平均取得
同様にgetCountを() -データの量を取得します。
使用します。
System.out.println("分组求和:");
Map<String, IntSummaryStatistics> collectGroupBySex = students.stream().collect(Collectors.groupingBy(student::getSex, Collectors.summarizingInt(student::getScore)));
System.out.println("男生:"+collectGroupBySex.get("男"));
System.out.println("男生的分数和:"+collectGroupBySex.get("男").getSum());
System.out.println("男生中最大分数:"+collectGroupBySex.get("男").getMax());
System.out.println("男生中最小分数:"+collectGroupBySex.get("男").getMin());
System.out.println("男生中平均分数:"+collectGroupBySex.get("男").getAverage());
System.out.println("男生个数:"+collectGroupBySex.get("男").getCount());
業績
第二に、ソートの組み合わせ-comparing-> thenComparing
シーン:
クラスでは、誰もが第一画分のすべてのコードを使用して、Javaでのスコアによってソート性別に応じてソートする方法を、自分のスコアを持っています。
方法:
比較、thenComparing
使用
System.out.println("组合排序:");
System.out.println("第一种:");
List<student> collectSortedMore = students.stream().sorted(Comparator.comparing(student::getSex).reversed().thenComparing(student::getScore).reversed()).collect(Collectors.toList());
collectSortedMore.stream().forEach(System.out::println);
System.out.println("第二种:");
students.sort(Comparator.comparing(student::getSex).reversed().thenComparing(student::getScore).reversed());
students.stream().forEach(student -> System.out.println(student));
業績
第三に、極端な値を求めて-summarizingLong / summarizingInt
シーン:
クラスでは、誰もがこのクラス最大のポイントと最小ポイントを求めるのJava平均でコードを使用する方法、自分のスコアを持っています。
方法:
要約を獲得するために最初に使用summarizingLongとsummarizingInt、その後、極端な値をそれぞれ取得します平均値--getAverage()を求める
(最大--getMaxを取得)を
取得し、最小--getMin()
)(--getSum を取得し
(--getCountの数を取得)
使用
System.out.println("求极值:");
LongSummaryStatistics collectStudentsSummary = students.stream().collect(Collectors.summarizingLong(student::getScore));
System.out.println("平均值=" + collectStudentsSummary.getAverage());
System.out.println("个数=" + collectStudentsSummary.getCount());
System.out.println("最大值=" + collectStudentsSummary.getMax());
System.out.println("最小值=" + collectStudentsSummary.getMin());
System.out.println("总和=" + collectStudentsSummary.getSum());
業績
:最後に、ストリーム上とするために、次のように個人的な理解である
ストリームと比較ループの
ループのために行うために、操作のサイクルれる
ストリームは1回の非同期操作で行われ
、この一つの動作サイクルのために言っている以上である、次のこの動作が一度行われる
ストリームは、すべての操作と同時にほとんどであるが
、ループが実行される時間のために、このような動作サイクルを必要として10回、10回実行、10倍のストリームを10回同時に実行されます。