Terdapat dua JSONArrays dengan format yang sama
Satu adalah data yang baru ditambah
saveArray: [{"name":"name1","value":10},{"name":"name2","value":12},...,{}]
Salah satunya ialah data purata
avgArray: [{"name":"name1","value":11},{"name":"name2","value":13},...,{}]
Ketahui nombor untuk mengira purata int num = 10;
Kemudian berdasarkan data baharu, selepas mengira purata, kemas kini rekod purata sedia ada:
Akhirnya dapat:
newAvgArray: [{"name":"name 1","value":(10 x 11 + 10)/11},{"name":"name 2","value":(13 x 10 +12) /11},...,{}]
Satu-satunya cara yang saya boleh fikirkan ialah:
for (int i = 0;i < avgArray.size();i++){
avgObj = avgArray.get(i).get("value");
addValue = saveArray.get(i).get("value");
//然后计算新的值保存新的Array
}
Adakah cara yang lebih baik untuk mengira
Tiada lagi.
Secara algoritma, ini adalah yang paling mudah. O(n)
Seharusnya ada master yang boleh menggunakan lambda untuk melakukan operasi sombong, tetapi setakat keperluan anda, anda hanya boleh mengambil nilai dan mengiranya semula, anda perlu menyemak soalan dengan lebih lanjut.
Anda tidak boleh melakukan operasi berikut. Pastikan nilai nama boleh sepadan.