av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

現(xiàn)有兩個格式相同JSONArray

一個為新增的數(shù)據(jù)

saveArray:[{'name':'名字1','value':10},{'name':'名字2','value':12},...,{}]

一個為平均值數(shù)據(jù)

avgArray:[{'name':'名字1','value':11},{'name':'名字2','value':13},...,{}]

知道計算平均值的數(shù)量 int num = 10;

然后根據(jù)新增數(shù)據(jù),計算平均值后,更新已有的平均值記錄:

最后得到:

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:

沒有了。

算法上來說,這個已經(jīng)最簡化了。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(); }

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

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 亚洲一级在线 | 午夜爽爽影院 | 欧美国产日韩一区二区 | 免费观看av网站 | 精品粉嫩小bbwbbwbbw | 欧洲精品一区二区 | 国产精品人人做人人爽人人添 | 天天做天天操 | 依人在线 | 成人高清 | 成人国产精品久久久网站 | 日本视频在线免费观看 | igao在线观看 | 国产小精品 | 欧美色综合天天久久综合精品 | 欧美成人激情 | 性av在线 | 日韩一区二区三区免费视频 | 欧美日韩在线看 | 日韩av免费看 | 亚洲黄色影院 | 亚洲精品国产精品国自产观看浪潮 | 国产中文字幕在线 | 成人精品视频 | 手机看片1024日韩 | 欧美在线a | 精品国产91 | 国产午夜精品一区二区三区四区 | 最新国产精品 | 黄免费视频 | 91网站在线免费观看 | 亚洲最大黄色网址 | 永久免费看mv网站入口亚洲 | 啪啪导航 | 免费毛片在线 | 黄色免费网站视频 | 四虎在线视频 | 日韩手机在线视频 | 亚洲一区二区三区四区在线 | 久久久久成人网 | 亚洲人在线观看 |