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;
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中面向对象的分拣存储的更多相关文章
- Java中面向对象三大特征
也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...
- java中面向对象的三大特性小结
java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...
- Java中正负数的存储方式-正码 反码和补码
Java中正负数的存储方式-正码 反码和补码 正码 我们以int 为例,一个int占用4个byte,32bits 0 存在内存上为 00000000 00000000 00000000 0000000 ...
- 关于Java中面向对象章节、IO 流中的重点基础知识。
一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多 ...
- JAVA中面向对象
一.方法: 1.方法概述: 在JAVA中,方法就是用来完成解决某件事情或实现某个功能的办法. 2.方法的语法格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,.....){ ...
- 2017.12.25 Java中面向对象思想的深刻理解
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...
- Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...
- JVM 内存分配模型概念和java中各种对象的存储
JVM 内存分配模型概念 --在工作中可能用到的机会不多,有个概念的了解 --此文是转载某位读者,应该是在阅读了<深入理解Java虚拟机JVM高级特性与最佳实践> 一书后,总结所得.写的不 ...
- Java中面向对象的理解
按照惯例,先做一个简单的介绍,现在开始学习 Thinging in Java 4 ,一边看,一边记录,我都不想给自己设定时间安排了,毕竟很少实现过.所以就这样吧!不定期的更新,我都会放到博客中的. 所 ...
随机推荐
- cas 服务端、客服端详细配置
一.准备 1.下载官方源码 CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas CAS-Client下载地址:http:// ...
- jsp 内置对象(一)
一.jsp的九大内置对象 内置对象 所属类 pageContext javax.servlet.jsp.PageContext request javax.servlet.http.HttpServl ...
- Java 异常(Java Exception)
Java异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类 ...
- jenkins Process leaked file descriptors
https://stackoverflow.com/questions/17024441/process-leaked-file-descriptors-error-on-jenkins 1. BUI ...
- UIImageView与UIScrollView的关系图
UIImageView与UIScrollView的关系图 https://www.evernote.com/shard/s227/sh/0af9f23c-08e6-4be6 ...
- JS中的实例方法与静态方法
一.静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么 静态方法: function A(){} A.sayMeS=function(){ console.lo ...
- hdu 1241Oil Deposits(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241 Oil Deposits Time Limit: 2000/1000 MS (Java/Othe ...
- hdfs文件上传机制与namenode元数据管理机制
1.hdfs文件上传机制 文件上传过程: 1.客户端想NameNode申请上传文件, 2.NameNode返回此次上传的分配DataNode情况给客户端 3.客户端开始依向dataName上传对应 ...
- ubuntu 提速
linux的各大发行版,都有些不必要的服务被默认开启了,针对ubuntu,我们可以采用选择性关闭的方法加速起动,提高系统性能. 这里我们安装一个软件: sudo apt-get install sys ...
- Python自动化运维 - Django(三)CSRF - Cookie&Session
CSRF跨站请求伪造 CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求 ...