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;
this.no = no;
this.score = score;
}
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;
} }

ClassRoom.java

package yzhou.map;

import java.util.ArrayList;
import java.util.List; /**
* 一个班级 多个学生
* @author 洋
*
*/
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;
} }

MapDemo03.java

package yzhou.map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; /**
*
* 面向对象+分解存储
* @author 洋
*
*/
public class MapDemo03
{
public static void main(String[] args)
{
List<Student> stuList = exam();
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);
} } /*
* 统计分析
* */
public static Map<String, ClassRoom> count(List<Student> list){
Map<String, ClassRoom> map = new HashMap<String,ClassRoom>();
//1.遍历
for(Student stu:list)
{
//分拣查看是否存在, 该编号的班级
String no = stu.getNo();
double score = stu.getScore();
//如果不存在 ,创建班级
ClassRoom room = map.get(no);
if(null==room)
{
room = new ClassRoom(no);
map.put(no, room);
} //存在,放入学生
room.getStuList().add(stu);
room.setTotal(room.getTotal()+score);
}
return map;
} /*
* 模拟考试 测试数据到List 中
* */ public static List<Student> exam(){
List<Student> list = new ArrayList<Student>();
//存放学生成绩
list.add(new Student("yzhou01","a",80));
list.add(new Student("yzhou02","a",80));
list.add(new Student("yzhou03","a",80));
list.add(new Student("yzhou04","b",80));
list.add(new Student("yzhou05","b",80));
list.add(new Student("yzhou06","b",80));
return list;
}; }

Java中面向对象的分拣存储的更多相关文章

  1. Java中面向对象三大特征

    也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...

  2. java中面向对象的三大特性小结

    java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...

  3. Java中正负数的存储方式-正码 反码和补码

    Java中正负数的存储方式-正码 反码和补码 正码 我们以int 为例,一个int占用4个byte,32bits 0 存在内存上为 00000000 00000000 00000000 0000000 ...

  4. 关于Java中面向对象章节、IO 流中的重点基础知识。

    一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多 ...

  5. JAVA中面向对象

    一.方法: 1.方法概述: 在JAVA中,方法就是用来完成解决某件事情或实现某个功能的办法. 2.方法的语法格式: 修饰符  返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,.....){ ...

  6. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  7. Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  8. JVM 内存分配模型概念和java中各种对象的存储

    JVM 内存分配模型概念 --在工作中可能用到的机会不多,有个概念的了解 --此文是转载某位读者,应该是在阅读了<深入理解Java虚拟机JVM高级特性与最佳实践> 一书后,总结所得.写的不 ...

  9. Java中面向对象的理解

    按照惯例,先做一个简单的介绍,现在开始学习 Thinging in Java 4 ,一边看,一边记录,我都不想给自己设定时间安排了,毕竟很少实现过.所以就这样吧!不定期的更新,我都会放到博客中的. 所 ...

随机推荐

  1. 通过反射获取T.class代码片段

    说明 持久化框架MyBatis和Hibernate中我们多多少少都会自己取写工具类!但是我们一般都会处理结果集转换成持久化对象,但是我们都要使用类! 代码片段 abstract public clas ...

  2. PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 经典题

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  3. 使用pipenv管理python项目

    入门 首先使用pip安装Pipenv及其依赖项, pip install pipenv 1 然后将目录更改为包含你的Python项目的文件夹,并启动Pipenv, cd my_project pipe ...

  4. 原生js实现单屏滚动

    类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库: css: html,body {height:100%;} body {margin:0px;} div {height:100 ...

  5. 关于ng-if的理论性知识你了解多少?

    ng-if简介: ● 使用ng-if指令可以完全根据表达式的值在DOM中生成或移除一个元素.如果赋值给ng-if 的表达式的值是false,那对应的元素将会从DOM中移除,否则对应元素的一个克隆将被重 ...

  6. jenkins Process leaked file descriptors

    https://stackoverflow.com/questions/17024441/process-leaked-file-descriptors-error-on-jenkins 1. BUI ...

  7. bzoj 3126: [Usaco2013 Open]Photo——单调队列优化dp

    Description 给你一个n长度的数轴和m个区间,每个区间里有且仅有一个点,问能有多少个点 Input * Line 1: Two integers N and M. * Lines 2..M+ ...

  8. Vuejs - 组件式开发

    初识组件 组件(Component)绝对是 Vue 最强大的功能之一.它可以扩展HTML元素,封装可复用代码.从较高层面讲,可以理解组件为自定义的HTML元素,Vue 的编译器为它添加了特殊强大的功能 ...

  9. hdu 1016 Prime Ring Problem (素数环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 题目大意:输入一个n,环从一开始到n,相邻两个数相加为素数. #include <iost ...

  10. Java 中的成员内部类

    内部类中最常见的就是成员内部类,也称为普通内部类.我们来看如下代码: 运行结果为: 从上面的代码中我们可以看到,成员内部类的使用方法: 1. Inner 类定义在 Outer 类的内部,相当于 Out ...