java 分组求和
时间: 2023-08-11 14:13:07 浏览: 80
可以使用 Java 8 的 Stream API 来实现分组求和。
假设我们有一个类 `Person`,其中包含姓名、年龄和薪水三个属性。我们需要按照年龄分组,并计算每个年龄组的薪水总和。可以按照以下步骤实现:
1. 创建一个 `List<Person>` 对象,存储所有人员信息。
2. 使用 `Collectors.groupingBy()` 方法对年龄进行分组,得到一个 `Map<Integer, List<Person>>` 对象,其中键为年龄,值为该年龄组的所有人员。
3. 对于每个年龄组,使用 `Collectors.summingDouble()` 方法对薪水进行求和,得到一个 `Map<Integer, Double>` 对象,其中键为年龄,值为该年龄组的薪水总和。
下面是示例代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 25, 3000.0),
new Person("Bob", 30, 4000.0),
new Person("Charlie", 25, 3500.0),
new Person("David", 30, 4500.0),
new Person("Eve", 35, 5000.0)
);
Map<Integer, Double> sumByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge,
Collectors.summingDouble(Person::getSalary)));
System.out.println(sumByAge);
// Output: {25=6500.0, 30=8500.0, 35=5000.0}
}
}
class Person {
private String name;
private int age;
private double salary;
public Person(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getSalary() {
return salary;
}
}
```
在上面的代码中,我们首先创建了一个 `List<Person>` 对象,存储了五个人员信息。然后使用 `Collectors.groupingBy()` 方法对年龄进行分组,并使用 `Collectors.summingDouble()` 方法对薪水进行求和,得到了一个 `Map<Integer, Double>` 对象,其中键为年龄,值为该年龄组的薪水总和。最后输出结果即可。
阅读全文