如何用Streamapi进行分组求和,可以使用Collectors.groupby(**, Collectors.summingInt(**))来进行分组求和。
public class Test {
public static void main(String[] args) {
Student student1 = new Student(1, 1);
Student student2 = new Student(1, 1);
Student student3 = new Student(2, 2);
Student student4 = new Student(2, 3);
Student student5 = new Student(3, 3);
Student student6 = new Student(3, 4);
Student student7 = new Student(4, 1);
List<Student> list = Arrays.asList(student1, student2, student3, student4, student5, student6, student7);
Map<Integer, Integer> collect = list.stream().collect(Collectors.groupingBy(Student::getId, Collectors.summingInt(Student::getScore)));
System.out.println(collect);
}
}
class Student{
private Integer id;
private Integer score;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public Student(Integer id, Integer score) {
this.id = id;
this.score = score;
}
}