楼主大大应该把代码贴出来,这样我就可以复制粘贴了;
代码如下(拷贝到idea上直接使用):
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName Test
* @DesCription TODO
* @Author 584654
* @Date 2021/10/15 18:23
* @Version 1.0
* @PackageName com.hdd.logtest.test
**/
public class Test {
public static void main(String[] args) {
List<Student> list=new ArrayList<Student>();
list.add(new Student("Tom",18,100,"class05"));
list.add(new Student("Jerry",22,70,"class04"));
list.add(new Student("Owen",25,90,"class05"));
list.add(new Student("Jim",30,80,"class05"));
list.add(new Student("Steve",28,66,"class06"));
list.add(new Student("Kevin",24,100,"class04"));
Double aveAge = list.stream().collect(Collectors.averagingInt(Student::getAge));
System.out.println("计算所有学生的平均年龄:"+aveAge);
Double aveScore = list.stream().collect(Collectors.averagingDouble(Student::getScore));
System.out.println("计算各个班级的平均分:"+aveScore);
}
/**
* @ClassName Student
* @DesCription TODO
* @Author 584654
* @Date 2021/10/15 18:14
* @Version 1.0
* @PackageName com.hdd.logtest.test
**/
public static class Student {
private String name;
private Integer age;
private double score;
private String className;
public Student(String name, Integer age, double score, String className) {
this.name = name;
this.age = age;
this.score = score;
this.className = className;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setScore(double score) {
this.score = score;
}
public void setClassName(String className) {
this.className = className;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public double getScore() {
return score;
}
public String getClassName() {
return className;
}
}
}
学会用stream
1.所有学生的平均年龄
double avgAge = list.stream().mapToInt(Student->Student.getAge()).average().getAsDouble();
2.各个班级的平均分
先对数据进行分组
Map<String, List<Student>> map = list.stream().collect(Collectors.groupingBy(Student::getClassNum));
得到多个组后遍历再用第一种进行取平均分