統計情報といえば、データベースなわけですが、今回は違います。
ここでは、件数、合計、平均、最小、最大のことです。
DoubleSummaryStatisticsを使って、レコードクラスの統計情報を取得するサンプル
レコードに保持しいている得点をもとに、件数、合計、平均、最小、最大の統計情報を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import java.util.Arrays; import java.util.DoubleSummaryStatistics; import java.util.List; public class SummaryStatisticsTest { public static void main(String[] args) { //データ準備 List<ScoreRec> scoreList = Arrays.asList( new ScoreRec("織田信長", 85 , 90), new ScoreRec("豊臣秀吉", 88 , 70), new ScoreRec("柴田勝家", 60 , 92), new ScoreRec("前田利家", 72 , 78), new ScoreRec("徳川家康", 78 , 75) ); //スコア1の統計情報を取得 DoubleSummaryStatistics dss1 = scoreList.stream() .mapToDouble(ScoreRec::score1) .summaryStatistics(); //スコア2の統計情報を取得 DoubleSummaryStatistics dss2 = scoreList.stream() .mapToDouble(ScoreRec::score2) .summaryStatistics(); //リストと統計情報を出力 scoreList.forEach(System.out::println); System.out.println(dss1); System.out.println(dss2); } record ScoreRec(String name, int score1, int score2) { } } |
実行結果
レコードクラスを詰めたリストの内容を表示。
また、レコード内の得点2つに対する統計情報を出力します。
1 2 3 4 5 6 7 | ScoreRec[name=織田信長, score1=85, score2=90] ScoreRec[name=豊臣秀吉, score1=88, score2=70] ScoreRec[name=柴田勝家, score1=60, score2=92] ScoreRec[name=前田利家, score1=72, score2=78] ScoreRec[name=徳川家康, score1=78, score2=75] DoubleSummaryStatistics{count=5, sum=383.000000, min=60.000000, average=76.600000, max=88.000000} DoubleSummaryStatistics{count=5, sum=405.000000, min=70.000000, average=81.000000, max=92.000000} |
サンプルの解説
Stream#summaryStatistics()によって、統計情報(DoubleSummaryStatistics)が取得できます。
今回は、DoubleStreamを使用していますが、IntStream、LongStreamでも同様に統計情報が取得できます。