【发布时间】:2019-12-23 06:06:51
【问题描述】:
请告诉我一种计算该结构平均值的有效方法。
例子:
List<Double> one = Arrays.asList(-17.3, -1.3, 22.3);
List<Double> two = Arrays.asList(-2.3, 12.2, -75.3);
List<Double> three = Arrays.asList(-0.3, 72.0, -22.1);
List<List<Double>> montSensorMetrics = new ArrayList<>();
montSensorMetrics.add(one);
montSensorMetrics.add(two);
montSensorMetrics.add(three);
期待:
R = ((-17.3) + (-2.3) + (-0.3)) / 3
List<Double> result = new ArrayList<>();
result.add(R)
现在,我创建了一个计算平均值的方法:
public List<Double> calculateAverageForMetric(List<List<Double>> montSensorMetrics) {
List<Double> sumAccumulator = new ArrayList<> ();
for (int j = 0; j < montSensorMetrics.size(); j++) {
//add first set as is
if (j == 0) {
sumAccumulator.addAll(montSensorMetrics.get(j));
j++;
}
var metricData = montSensorMetrics.get(j);
for (int i = 0; i < metricData.size(); i++) {
double elementValueInAccumulator = sumAccumulator.get(i);
double currentValueInMetric = metricData.get(i);
double sum = elementValueInAccumulator + currentValueInMetric;
sumAccumulator.set(i, sum);
}
}
return sumAccumulator.stream().map(v - > v / montSensorMetrics.size()).collect(Collectors.toList());
}
你能告诉我,这是正确的决定吗?
【问题讨论】:
-
问:你不会认为List.add() 是把list 的元素算术相加吧?您知道“.add()”只是将一个列表附加到另一个列表,对吗?问:那你的问题到底是什么?
-
Java 代码仅供说明之用。而且对核心问题没有直接影响。我想展示结构是什么样的,需要采取措施来计算算术平均值。我究竟是如何表现得更低一些。我需要轮流添加嵌套列表的值并将结果放在另一张表中。
-
你可以使用流(Java 8)