利用ArrayList和Map,计算各个班级的平均分

1、有如下Student对象,属性如图所示:其中classNum表示学生的班级编号,比如:class05
有如下List:
List 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”)); 
在这个list 的基础上,完成下列要求:计算各个班级的平均分
  • 父类 学生
package Day1215;public class Student {//实体类 五部走   私有属性  无参构造 有参构造 封装方法 重写toString()private String name ; private int age ;private double score;private String classNum;public Student() {super();}public Student(String name, int age, double score, String classNum) {super();this.name = name;this.age = age;this.score = score;this.classNum = classNum;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getClassNum() {return classNum;}public void setClassNum(String classNum) {this.classNum = classNum;}@Overridepublic String toString() {return "Student [姓名=" + name + ", age=" + age + ", score=" + score + ", classNum=" + classNum + "]";}
}
  • 测试类
package Day1215;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;public class TestStudent {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, 88, "class04")); list.add(new Student("Kevin", 24, 76, "class10")); list.add(new Student("Kevin", 24, 92, "class07")); list.add(new Student("Kevin", 24, 58, "class07")); list.add(new Student("Kevin", 24, 83, "class09")); // 以学生班级名为键,班级学生集合为值HashMap<String,List<Student>> map = new HashMap<>();for(Student stu : list) {// 获取该学生的班级名称String classNum = stu.getClassNum();//开始判断  如果该班级在map集合中不存在if(!map.containsKey(classNum)) {// 不存在就创建一个学生集合List<Student> listStu = new ArrayList<Student>();listStu.add(stu);// 以班级名为键 班级的学生集合为值  存入 mapmap.put(classNum, listStu);}else {//表示该学生的班级和学生集合已经存在List<Student> list2 = map.get(classNum);list2.add(stu);}}// 开始统计各个班级的平均分//遍历Map// 拿所有的键 也就是获取所有的班级号Set<String> set = map.keySet();Iterator<String> it = set.iterator();double sumScore = 0;//用来统计班级总分数while(it.hasNext()) {// 学生班级号String key = it.next();//通过键拿值  也就是通过班级号,拿该班级的学生集合List<Student> listStu = map.get(key);//遍历该班级集合并统计该班的总分数for(Student stu : listStu) {sumScore += stu.getScore();}System.out.println(key+"这个班级的平均分为:"+ sumScore/listStu.size());sumScore = 0;}}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部