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,并在实际开发中有所帮助。如果您有任何疑问或建议,欢迎留言讨论。感谢阅读!