【发布时间】:2022-01-23 12:00:22
【问题描述】:
我有一个 JSONArray,其中包含多个 JSONObject,每个 JSON 对象代表一行数据。 (就像一个 SQL 行)
示例:
[{
"col1": "c1",
"col2": "r1",
"col3": 12121
}, {
"col1": "c1",
"col2": "r1",
"col3": 1321
}, {
"col1": "c1",
"col2": "r2",
"col3": 4342
}, {
"col1": "c1",
"col2": "r2",
"col3": 4532
}]
包含分组依据的列的列表:
示例:
["col1","col2"]
最后,必须应用的聚合,MIN、MAX、SUM、AVG 以及必须应用聚合的列:
预期输出:聚合为 SUM
[{
"col1": "c1",
"col2": "r1",
"col3": 13442
},{
"col1": "c1",
"col2": "r2",
"col3": 8874
}]
到目前为止我所尝试的:
每当我看到值发生变化时,我想将当前与以前的列列表进行比较,我对此进行聚合。但是这种方法看起来效率太低了。我正在考虑使用 Java Streams,但我很不擅长。任何帮助将不胜感激。
if (agg.equalsIgnoreCase("MIN")) {
Number min = data.getJSONObject(0).getNumber(column);
for (int i = 0; i < data.length(); i++) {
JSONObject jsonObject = data.getJSONObject(i);
if (i > 1) {
}
}
}
【问题讨论】:
标签: java json java-stream