面向对象分拣存储

题目:一个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;
    }

}
时间: 2024-10-08 08:15:43

面向对象分拣存储的相关文章

Java中面向对象的分拣存储

Student.java package yzhou.map; /** * 学生类 * * * @author 洋 * */ public class Student { private String name; private String no; private double score; public Student() { } public Student(String name, String no, double score) { super(); this.name = name;

Java中分拣存储的demo

  //Letter.java package yzhou.map; /** * * @author 洋 * */ public class Letter { private String name; private int count; public Letter() { // TODO Auto-generated constructor stub } public Letter(String name) { super(); this.name = name; } public Lette

Guava基本用法

一.只读设置 package Guava; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.google.common.collect.ImmutableList; /** * 只读设置 */ public class Demo01 { public static void main(String[] args) { List<String> list = n

集合框架学习之Guava Collection

开源工具包: Guava : Google Collection Apache:Commons Collecton 1.1 Google Collections Guava:google的工程师利用传说中的"20%时间"开发的集合库,它是对jdk提供的扩展,提供了很多使用的类来简化代码 jar包:https://code.google.com/p/guava-libraries/ 源码下载: 下载git工具:(易于本地增加分支和分布式的特性) msysgit:http://code.g

关于CoreData的理解和使用.

CoreData是苹果官方推出的一种方便的面向对象的存储方式,相信大家都已经对其有所了解,但是对于CoreData的概念大家都存在部分的误区.给大家推荐个网址是苹果的官方文档的翻译版(http://objccn.io/issue-4-1/)这里详细的解释了CoreData存在以及出现的意义.下面我就带大家来学习下如何使用CoreData. 今天我们先学习最基础的CoreData的操作(单表操作) 第一步 创建一个带有CoreData的工程. 创建完成带有CoreData的工程后我们可以看到我们工

ceph 译文 RADOS:A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters

RADOS:A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters 论文翻译 摘要 块式和面向对象的存储架构形成了一种以提升扩展性的存储cluster.然而,现存的系统继续把存储节点作为一个被动的设备,尽管他们有能力展示智能和自治.我们提出RADOS的设计和实现,RADOS是一个可靠的面向对象服务,通过利用每个独立节点的智能可以扩展到数千台设备.当允许节点半自治地通过利用集群地图来进行自我复制,错误检测,错

对硅谷和硅谷科技公司的十四问,全程干货

引用: http://www.36kr.com/p/219345.html 从硅谷公司哪家强,到人人在议的泡沫问题,大数据和人工智能如何结合?2015年的科技前瞻是怎样一副图景?来自硅谷的Coursera软件工程师董飞将其近日在斯坦福公开讲座上的干货和各种场合的问答整理出来和大家分享.文中有他的一手从业经验,也有其对亲身就职或深度研究过的一些公司具体分析,如Hadoop.Amazon.LinkedIn等.董飞的知乎页面在这里,邮箱是[email protected]. 1.目前硅谷最火最有名的高

MongoDB 数据库下载和安装

MongoDB是一款非常流行的非关系型数据库,将面向对象数据存储做的很好.这里就不详细介绍它的使用,本文主要讲解如何安装MongoDB数据库,把自己安装过程中碰到的问题和最后解决方法分享给大家,希望可以给大家带来帮助. 一.首先下载MongoDB数据库 官网地址:https://www.mongodb.org/downloads,选择操作系统及位数,进入下载页,然后点击箭头处的Download not starting?下载,不要填写资料. 由于国外网站访问有点慢,我是在http://www.c

reduce 阶段遍历对象添加到ArrayList中的问题

起初遍历values时直接把对象添加到集合中,后来输出结果和预期不符,debug时发现添加到集合中的对象的值全部是最后一个对象的值,网上百度了下,发现是reduce阶段对象重用的问题,reduce阶段的key,value分别指向一个对象,无论操作了多少个键值对,始终是这两个对象,而ArrayList的add()添加的是对象的引用而不是对象的值,所以如果想要保存key,value的值(属性),需要重新new一个对象进行保存,需要添加到集合中的,应当先new一个对象,拷贝属性后再添加到集合中,不能把