2017-07-30 87 views
2

私は、単純なPOJOの食事を持っていると仮定すると、ストリーム数年間にわたって毎月消費されるカロリーを合計するリストを取得することができます。月のみに基づいて表を作成するのは非常に簡単ですが、私はカロリーの消費量を時間の経過とともに比較するために、数年に渡って広がった棒グラフを作成したいと思います。のJava 8を使用して、月、年によってグループ化されたデータを集計する方法

どうすればいいですか?何年も何ヶ月かのHashMapsを使用して、何ヶ月も何年ものインスタントオブジェクトの複雑な構造を作る必要がありますか、それとも良い方法がありますか?

答えて

4

あなたは、その結果は年と月でソートされていることを確認するためにTreeMapを使用して、このようにそれを実行します。

Map<YearMonth, Integer> caloriesByMonth = meals.stream() 
     .collect(Collectors.groupingBy(m -> YearMonth.from(m.mealtime), 
             TreeMap::new, 
             Collectors.summingInt(m -> m.calories))); 
+0

あなたは表の順序でデータを取得できるように、どのようにして、その後YEARMONTHを並べ替えるのですか? –

+2

@StephaneGrenier私はあなたの質問を理解していません。マップは 'TreeMap'なので、' YearMonth'でソートされています。これはもちろん、年月順にソートされます。 – Andreas

+0

私はそれを認識しませんでした。私は脳のブロックを持っていて、TreeMapのTree部分を完全に忘れていました。私はMapだけを考えていました。ありがとうございました。 –

関連する問題