在Java中,要计算集合中各组的平均值,你可以使用以下步骤:
- 创建一个Map,用于存储每个组的总和和计数。
- 遍历集合,将每个元素按照组别添加到Map中。
- 遍历Map,计算每个组的平均值。
以下是一个示例,演示如何计算一个List中各组的平均值:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 创建一个List,包含一些示例数据
List<Data> dataList = new ArrayList<>();
dataList.add(new Data("A", 10));
dataList.add(new Data("A", 20));
dataList.add(new Data("B", 30));
dataList.add(new Data("B", 40));
dataList.add(new Data("C", 50));
// 计算各组的平均值
Map<String, Double> averageMap = calculateGroupAverage(dataList);
// 输出结果
for (Map.Entry<String, Double> entry : averageMap.entrySet()) {
System.out.println("Group: " + entry.getKey() + ", Average: " + entry.getValue());
}
}
public static Map<String, Double> calculateGroupAverage(List<Data> dataList) {
// 创建一个Map,用于存储每个组的总和和计数
Map<String, double[]> groupSumAndCount = new HashMap<>();
// 遍历集合,将每个元素按照组别添加到Map中
for (Data data : dataList) {
String group = data.getGroup();
double value = data.getValue();
if (!groupSumAndCount.containsKey(group)) {
groupSumAndCount.put(group, new double[]{value, 1});
} else {
double[] sumAndCount = groupSumAndCount.get(group);
sumAndCount[0] += value;
sumAndCount[1]++;
}
}
// 创建一个Map,用于存储每个组的平均值
Map<String, Double> averageMap = new HashMap<>();
// 遍历Map,计算每个组的平均值
for (Map.Entry<String, double[]> entry : groupSumAndCount.entrySet()) {
double[] sumAndCount = entry.getValue();
double average = sumAndCount[0] / sumAndCount[1];
averageMap.put(entry.getKey(), average);
}
return averageMap;
}
static class Data {
private String group;
private double value;
public Data(String group, double value) {
this.group = group;
this.value = value;
}
public String getGroup() {
return group;
}
public double getValue() {
return value;
}
}
}
这个示例中,我们创建了一个名为Data
的类,用于存储组别和值。我们首先创建了一个包含示例数据的List,然后使用calculateGroupAverage
方法计算各组的平均值。最后,我们遍历结果Map并输出每个组的平均值。