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. POJ 2823 Sliding Window ST RMQ

    Description An array of size n ≤ 106 is given to you. There is a sliding window of size k which is m ...

  2. Linux系统查看系统信息

    1. CPU # lscpu # cat /proc/cpuinfo //可以知道每个cpu信息,如每个CPU的型号,主频等 2. 内存 # free -m # cat /proc/meminfo / ...

  3. Watchcow(POJ2230+双向欧拉回路+打印路径)

    题目链接:http://poj.org/problem?id=2230 题目: 题意:给你m条路径,求一条路径使得从1出发最后回到1,并满足每条路径都恰好被沿着正反两个方向经过一次. 思路:由于可以回 ...

  4. Remmarguts' Date(POJ2449+最短路+A*算法)

    题目链接:http://poj.org/problem?id=2449 题目: 题意:求有向图两点间的k短路. 思路:最短路+A*算法 代码实现如下: #include <set> #in ...

  5. HDU 1422 重温世界杯 (dp)

    题目链接 Problem Description 世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利. 世界杯虽然结束了,但是这界世界杯给我们还是留下许多值 ...

  6. servlet线程不安全

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAE9CAIAAABY1Yv/AAAgAElEQVR4nOy9eVxN2/8/viuaU5kqZW

  7. Java中通过方法创建一个http连接并请求(服务器间进行通信)

    服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...

  8. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序

    BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...

  9. HTTPS加密通信原理及数字证书系统

    https加密通信原理: 公钥私钥成对,公钥公之于众,私钥只有自己知道. 用公钥加密的信息只能由与之相对应的私钥解密. 甲给乙发送数据时,甲先用乙的公钥加密这段数据,再用自己的私钥对这段数据的特征数据 ...

  10. SQL注入文件读取通过from for分页读取

    http://103.238.227.13:10088/?id=1 在读取文件的时候发现不能够一下子全部读取出来.经过百度学习了一下,看到别人使用from for说实在此前真不知道这操作. 先来看一下 ...