現有兩個格式相同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的值能夠對應上。