java集合类练习,第二问用灵活的方式解,写下代码注释

img

楼主大大应该把代码贴出来,这样我就可以复制粘贴了;
代码如下(拷贝到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));

得到多个组后遍历再用第一种进行取平均分