计算所有学生的平均年龄,并计算各个班级的平均分(提示:不能假设只有上面数据中的三个班级,基于以上数据,可考虑创建一个新的map集合,键为班级号,值为List集合,该集合中保存所有该班级的学生或学生的成绩,如下,并基于该map集合计算各个班级平均分)
package javademo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudentText {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
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 sum =0;
for(int i = 0;i < list.size(); i++){
sum += list.get(i).getAge();
}
double vagAge = sum / list.size();
System.out.println(vagAge);
Map<String,ArrayList<Double> > map = new HashMap<>();
ArrayList<Double> slist;
for(Student stu : list){
//判断map集合中是否存在一个班级名字的集合
slist = map.get(stu.getClassName());
//为以后新加入的班级做的准备,若有新的班级,则新建一个集合
if(slist == null){
slist = new ArrayList<>();
}
//将学生成绩假如到list集合中,生成map集合
slist.add( stu.getScore());
map.put(stu.getClassName(), slist);
}
//遍历出班级名称(键)
for(String className :map.keySet()){
//根据键取值,存入slist集合中
slist = map.get(className);
double sumScore = 0;
//遍历班级成绩,算平均分
for(Double score : slist){
sumScore += score;
}
double vagScore = sumScore / slist.size();
System.out.println(className+"平均分是:"+vagScore);
}
}
}