Java8 List多个属性累加

在Java开发中,我们经常会遇到需要对一个List中的多个属性进行累加的情况。比如说我们有一个List中存储了多个学生对象,每个学生对象包含了成绩、年龄、身高等属性,我们需要对这些属性进行累加求和。在Java8中,我们可以使用Stream API来简洁地实现这个需求。

Stream API

Stream API是Java8中引入的新特性,它提供了一种更加便捷的方式来处理集合数据。通过Stream API,我们可以轻松地对集合中的元素进行过滤、映射、排序、聚合等操作。在这里,我们将使用Stream API来对List中的多个属性进行累加。

代码示例

假设我们有一个Student类,包含了成绩、年龄、身高等属性:

public class Student {
    private int score;
    private int age;
    private double height;

    public Student(int score, int age, double height) {
        this.score = score;
        this.age = age;
        this.height = height;
    }

    // 省略getter和setter方法
}

现在我们有一个List存储了多个Student对象:

List<Student> students = new ArrayList<>();
students.add(new Student(90, 18, 170.0));
students.add(new Student(85, 17, 165.0));
students.add(new Student(95, 19, 175.0));

我们想要对这个List中所有学生的成绩进行累加,可以使用Stream API的mapToInt()方法来实现:

int totalScore = students.stream()
                         .mapToInt(Student::getScore)
                         .sum();
System.out.println("总成绩:" + totalScore);

如果我们想要对年龄和身高进行累加,可以使用reduce()方法来实现:

int totalAge = students.stream()
                       .map(Student::getAge)
                       .reduce(0, Integer::sum);
System.out.println("总年龄:" + totalAge);

double totalHeight = students.stream()
                             .map(Student::getHeight)
                             .reduce(0.0, Double::sum);
System.out.println("总身高:" + totalHeight);

类图

classDiagram
    class Student {
        -int score
        -int age
        -double height
        +Student(int score, int age, double height)
        +int getScore()
        +int getAge()
        +double getHeight()
    }

饼状图

pie
    title 学生成绩分布
    "90分" : 30
    "85分" : 25
    "95分" : 45

结语

通过Stream API,我们可以轻松地对List中的多个属性进行累加操作,代码简洁易懂。希望本文能帮助大家更好地理解Java8中的Stream API,并在实际开发中有所帮助。如果您有任何疑问或建议,欢迎留言讨论。感谢阅读!