我尝试编写这段代码来测试我如何计算哈希映射的类似索引的平均值的想法
即,对于第一个数组的第一个值为2
,第一个数组的第一个值为4
,并且第三个数组的第一个值为{{1我希望将(4 + 3 + 2/3)= 3
的值赋给第一个索引的最终double []数组,依此类推所有索引2到n。
3
这模仿了原始程序的结构,其中权重通过do while循环填充。该代码虽然破坏了,但并未成功执行上述操作。我一直在网上搜索并尝试不同的方法来解决它,但我无法解决它。也许有人可以发现我错误的逻辑。
答案 0 :(得分:5)
也许我误解了你,但你没有计算平均值,因为对于你地图中的每个阵列,你没有考虑到它的所有位置。你正在使用密钥,这绝对没有意义。无论如何,你的代码非常混乱。你需要做的只是一个循环在另一个循环中。一个通过数组,另一个通过每个数组的元素。计算平均值的方法如下(以教学方式):
//compute averages
double[] sums = new double[size];
double[] averages = new double[size];
for (Entry<Integer, double[]> entry : cachedWeights.entrySet()) {
double[] value = entry.getValue();
for(int pos=0; pos < Math.min(size, value.length); pos++){
sums[pos] += value[pos];
}
}
for(int pos=0; pos < size; pos++){
averages[pos] = sums[pos] / cachedWeights.size();
}