现有两个格式相同JSONArray
一个为新增的数据
saveArray:[{"name":"名字1","value":10},{"name":"名字2","value":12},...,{}]
一个为平均值数据
avgArray:[{"name":"名字1","value":11},{"name":"名字2","value":13},...,{}]
知道计算平均值的数量 int num = 10;
然后根据新增数据,计算平均值后,更新已有的平均值记录:
最后得到:
newAvgArray:[{"name":"名字1","value":(10 x 11 + 10)/11},{"name":"名字2","value":(13 x 10 +12)/11},...,{}]
我能想到的办法就是:
for (int i = 0;i < avgArray.size();i++){
avgObj = avgArray.get(i).get("value");
addValue = saveArray.get(i).get("value");
//然后计算新的值保存新的Array
}
有没有更好的办法去计算
没有了。
算法上来说,这个已经最简化了。O(n)
应该有大神能够用lambda骚气的操作,但就你的要求而言,只能取值重新计算,另外,你要多审题。
不能下面这种操作,要确保name的值能够对应上。