亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - 如何更好的計算兩個相同格式的Array數據的平均值

瀏覽:62日期:2023-10-29 09:05:35

問題描述

現有兩個格式相同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}

有沒有更好的辦法去計算

問題解答

回答1:

沒有了。

算法上來說,這個已經最簡化了。O(n)

回答2:

public static void getNewArrayAvg(JSONArray add,JSONArray avg,int num){JSONArray res = new JSONArray();int size = add.size();int range = avg.size();for (int i = 0; i < size; i++) { String key = add.getJSONObject(i).getString('name'); double avgNum = add.getJSONObject(i).getDoubleValue('value')/(num+1.0); for (int j = 0; j < range; j++) {if (key.equals(avg.getJSONObject(j).getString('name'))) { avgNum += avg.getJSONObject(j).getDoubleValue('value') * (num/(num+1.0)); JSONObject tmp = new JSONObject(); tmp.put('name', key); tmp.put('value', avgNum); res.add(tmp); break;} }}res.toString(); }

應該有大神能夠用lambda騷氣的操作,但就你的要求而言,只能取值重新計算,另外,你要多審題。不能下面這種操作,要確保name的值能夠對應上。

avgObj = avgArray.get(i).get('value'); addValue = saveArray.get(i).get('value');

標簽: java
相關文章:
主站蜘蛛池模板: 国产精品对白交换绿帽视频 | 亚洲欧美日韩综合久久久久 | 青青青青久久国产片免费精品 | 日日麻批免费视频播放 | 一区二区三区四区视频在线观看 | 亚州午夜 | 亚洲国产精久久久久久久春色 | 猫咪视频成人永久免费观看 | 青青久久久国产线免观 | 精品久久一 | 国产精品巨乳 | 999精品| 免费高清毛片 | 亚洲在线免费视频 | 一级特黄高清完整大片 | 国产一区二区三区在线观看影院 | 国产精品v片在线观看不卡 国产精品v在线播放观看 | 亚洲欧美日韩综合在线播放 | 欧美日本韩国一区 | 免费观看黄色小视频 | 在线 看片 | 国产极品精频在线观看 | 伊人久久国产 | 一级黄色片免费看 | 精品欧美一区二区vr在线观看 | 国产成人免费无庶挡视频 | 国产精品成人一区二区不卡 | 视频一区二区国产无限在线观看 | 国产精品美女一区二区三区 | 99视频在线观看视频一区 | 欧美艳星性videose精品 | 国产国产人免费人成免费视频 | 亚洲日韩男人网在线 | 日韩国产精品欧美一区二区 | 亚洲欧洲国产综合 | 高清免费国产在线观看 | 真人一级毛片 | 欧美一级毛片免费播放aa | 国产三级不卡 | 国产美女自拍视频 | 亚洲免费人成在线视频观看 |