私のSpringブートバックエンドは、アプリとゲームを管理します。私は評価オブジェクトとこの評価オブジェクトを持ち、評価履歴をHashMapに保存しています
// Number of history by day
@ElementCollection(fetch = FetchType.EAGER)
private Map<String, Integer> ratingHistory = new HashMap<>();
私は次のようなものになります:
"ratingHistory": {
"07/01/2020": 12,
"07/02/2020": 5,
"07/03/2020": 0
}
このjsonは大きくなります...
評価の推移を示すグラフを表示したい:今週:ハッシュマップで最後の7つのデータを返す
表示したい場合、処理されたデータを集約して返すにはどうすればよいですか?
私はそれを正しく処理する方法については知りません。ありがとう
あなたは、Java 8+を使用していると仮定すると、あなたは変更する必要がありますMap<String, Integer>
しNavigableMap<LocalDate, Integer>
、現実にされます、TreeMap
。
これにより、キーが確実にソート可能になり、を呼び出すことができますsubMap(LocalDate from, LocalDate to)
。これは、マップが非常に大きくなったときに役立ちます。
また、を使用LocalDate
すると、次のグループ化が簡単になります。
週:WeekFields.of(Locale.US)
、および2つのメソッドweekBasedYear()
とweekOfWeekBasedYear()
。
Java 8+ストリームを使用して実際の集計を行う方法については、Webに多数の例がありますcollect(Collectors.groupingBy(...))
。たとえば、Javaラムダを使用したSQLのようにGroup byおよびsumオブジェクトを使用しますか?。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加