前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于HashMap的分挑存储例子

基于HashMap的分挑存储例子

作者头像
SmileNicky
发布2019-01-17 15:48:55
3670
发布2019-01-17 15:48:55
举报
文章被收录于专栏:Nicky's blogNicky's blog

按班级统计学生的平均成绩时,为了减少工作量,计划使用计算机来做这样的统计工作。

下面给出一个类Score用来表示每条考试成绩。

代码语言:javascript
复制
package com.test;

/**
 * 学生成绩。
 */
class Score {
    /**
     * 学生姓名。
     */
    public String stdName;
    /**
     * 班级号。
     */
    public String classNumber;
    /**
     * 分数。
     */
    public int mark;
	public String getStdName() {
		return stdName;
	}
	public void setStdName(String stdName) {
		this.stdName = stdName;
	}
	public String getClassNumber() {
		return classNumber;
	}
	public void setClassNumber(String classNumber) {
		this.classNumber = classNumber;
	}
	public int getMark() {
		return mark;
	}
	public void setMark(int mark) {
		this.mark = mark;
	}
    
    
}

编写一个类ScoreStatistic,在类里实现以下方法:

代码语言:javascript
复制
package com.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class ScoreStatistic{
    public ScoreStatistic(){
    }
    public Map<String,Integer> statistic1(List<Score> scores){
		Map<String,Integer> classcountMap = new HashMap<String, Integer>();
		Map<String,Integer> classsumMap = new HashMap<String, Integer>();
		Iterator<Score> it = scores.iterator();
		while (it.hasNext()) {
			Score temp = it.next();
			String cn = temp.classNumber;
			int cm = temp.mark;
//			System.out.println(it.next().classNumber+"+"+it.next().mark);
			if(classcountMap.get(cn)!=null){System.out.println("1");
				classcountMap.put(cn, classcountMap.get(cn)+1);
				classsumMap.put(cn, classsumMap.get(cn)+cm);
			}else{
				classcountMap.put(cn, 1);
				classsumMap.put(cn,cm);
			}
			
		}
		Map<String, Integer> finalMap = new HashMap<String, Integer>();
		Iterator it1=classcountMap.keySet().iterator();    
		while(it1.hasNext()){    
		     String key;    
		     Integer value; 
		     Integer marksum;
		     key=it1.next().toString();    
		     value=classcountMap.get(key); 
		     marksum=classsumMap.get(key); System.out.println(value);
		     finalMap.put(key, marksum/value);
		     System.out.println(key+":"+marksum/value);    
		}   
		return classsumMap;
	}
    
    public Map<String,Integer> statistic(List<Score> scores){
		Map<String,Integer> map = new HashMap<String,Integer>();
		
		Map<String,ClassRoom> roomMap = new HashMap<String,ClassRoom>();
		int avg;
		ClassRoom room = null;
		for(Score score:scores){
			String classNumber = score.getClassNumber();
			int mark = score.getMark();
			room = roomMap.get(classNumber); 
			if(room == null){
				room = new ClassRoom(classNumber);
				roomMap.put(classNumber, room);
			}
			room.setTotal(room.getTotal()+mark);
			room.getList().add(score);
			//System.out.println(score.getClassNumber()+":"+avg);
		}
		
		Set<Map.Entry<String,ClassRoom>> set = roomMap.entrySet();
		Iterator<Map.Entry<String, ClassRoom>> it = set.iterator();
		while(it.hasNext()){
			Map.Entry<String, ClassRoom> entry = it.next();
			ClassRoom ro = entry.getValue();
			avg = ro.getTotal()/ro.getList().size();
			map.put(ro.getClassNumber(), avg);
			System.out.println(ro.getClassNumber()+":"+avg);
		}
		
		return map;
	}
    
    class ClassRoom{
    	/**
         * 班级号。
         */
        public String classNumber;
        
        /**
         * 总分
         */
        private int total;
        
        private List<Score> list;
        
        public ClassRoom(){
        	list = new ArrayList<Score>();
        }
        
        public ClassRoom(String classNumber){
        	this();
        	this.classNumber = classNumber;
        }

		public String getClassNumber() {
			return classNumber;
		}

		public void setClassNumber(String classNumber) {
			this.classNumber = classNumber;
		}

		public int getTotal() {
			return total;
		}

		public void setTotal(int total) {
			this.total = total;
		}

		public List<Score> getList() {
			return list;
		}

		public void setList(List<Score> list) {
			this.list = list;
		}
        
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档