zoukankan      html  css  js  c++  java
  • 面向对象分拣存储

     题目:一个Student类,属性name姓名,no编号,score成绩,现在将若干个student对象放入List,请统计出每个班级的总分和平均分

    /**
     * 学生类
     * @author student
     *
     */
    public class Student {
    
        private String name;//姓名
        private String no;//编号
        private double score;//成绩
        public Student(String name, String no, double score) {
            super();
            this.name = name;
            this.no = no;
            this.score = score;
        }
        public Student() {
            super();
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getNo() {
            return no;
        }
        public void setNo(String no) {
            this.no = no;
        }
        public double getScore() {
            return score;
        }
        public void setScore(double score) {
            this.score = score;
        }
        
    }
    /**
     * 一个班级多个学生(学生列表)
     * @author classroom
     *
     */
    public class ClassRoom {
        private String no;//班级编号
        private List<Student> stuList;//班级列表
        private double total;//总分
        public ClassRoom() {
            stuList=new ArrayList<Student>();
            
        }
        public ClassRoom(String no) {
            this();
            this.no=no;
            
        }
        public ClassRoom(String no, List<Student> stuList, double total) {
            super();
            this.no = no;
            this.stuList = stuList;
            this.total = total;
        }
        public String getNo() {
            return no;
        }
        public void setNo(String no) {
            this.no = no;
        }
        public List<Student> getStuList() {
            return stuList;
        }
        public void setStuList(List<Student> stuList) {
            this.stuList = stuList;
        }
        public double getTotal() {
            return total;
        }
        public void setTotal(double total) {
            this.total = total;
        }
        
    
    }
    /**
     * 一个Student类,属性name姓名,no编号,score成绩,现在将若干个student对象放入List,请统计出每个班级的总分和平均分
     * 面向对象分拣存储
     * @author MapDemo
     *
     */
    public class MapDemo {
    
        public static void main(String[] args) {
            //1.考试
            List<Student> stuList=exam();
            //2.分析成绩
            Map<String ,ClassRoom> map=count(stuList);
            //查看总分 平均分
            view(map);
        }
        /**
         * 查询每个班的总分和平均分 
         * 遍历map
         */
        public static void view( Map<String ,ClassRoom> map){
            Set<String> keys=map.keySet();
            //获取迭代器对象
            Iterator<String> keysIt=keys.iterator();
            //先判断
            while(keysIt.hasNext()){
                //在获取
                String no=keysIt.next();
                ClassRoom room=map.get(no);
                //查看总分 计算平均分
                double total=room.getTotal();
                double avg=total/room.getStuList().size();
                System.out.println(no+"总分:"+total+"平均分:"+avg);
            }
        }
        /**
         * 统计分析
         * 1、面向对象
         * 2、分拣存储
         */
        public static Map<String ,ClassRoom> count(List<Student> list){
            Map<String ,ClassRoom> map=new HashMap<String,ClassRoom>();
            //1.遍历List
            for (Student student : list) {
                //分拣查出是否存在该编号的班级
                String no=student.getNo();//班级编号
                double score=student.getScore();//学生成绩
                //如果不存在就创建班级
                ClassRoom room=map.get(no);
                if(null==room){
                    room=new ClassRoom(no);
                    map.put(no, room);
                }
                //存在放入学生
                room.getStuList().add(student);//放入学生
                room.setTotal(room.getTotal()+score);//计算总分
            }
            return map;
        }
        
        
        /**
         * 模拟考试,测试数据放到List中
         */
        public static List<Student> exam(){
            List<Student> list=new ArrayList<Student>();
            //存放学生的成绩
            list.add(new Student("张三","1班",90));
            list.add(new Student("李四","1班",80));
            list.add(new Student("王五","1班",60));
            list.add(new Student("赵六","2班",90));
            list.add(new Student("王大锤","2班",80));
            return list;
        }
    
    }
  • 相关阅读:
    MySQL优化
    MySQL 的 SQL 操作
    笔记本电脑同时使用两个网络
    top
    logrotate
    正则表达式学习总结
    HttpClient parameter 和body 传输同时进行
    Node.js背景
    前后端分离的理解
    shiro 的subject 以及Context 对象的具体的含义。
  • 原文地址:https://www.cnblogs.com/Jansens520/p/6978147.html
Copyright © 2011-2022 走看看