Java基础之基于HashMap的分挑存储例子

举报
yd_273762914 发表于 2020/12/03 01:14:29 2020/12/03
【摘要】 按班级统计学生的平均成绩时,为了减少工作量,计划使用计算机来做这样的统计工作。 下面给出一个类Score用来表示每条考试成绩。   package com.test; /** * 学生成绩。 */class Score { /** * 学生姓名。 */ public String stdName; /** * 班级号。 */ public String cla...

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

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

 


  
  1. package com.test;
  2. /**
  3. * 学生成绩。
  4. */
  5. class Score {
  6. /**
  7. * 学生姓名。
  8. */
  9. public String stdName;
  10. /**
  11. * 班级号。
  12. */
  13. public String classNumber;
  14. /**
  15. * 分数。
  16. */
  17. public int mark;
  18. public String getStdName() {
  19. return stdName;
  20. }
  21. public void setStdName(String stdName) {
  22. this.stdName = stdName;
  23. }
  24. public String getClassNumber() {
  25. return classNumber;
  26. }
  27. public void setClassNumber(String classNumber) {
  28. this.classNumber = classNumber;
  29. }
  30. public int getMark() {
  31. return mark;
  32. }
  33. public void setMark(int mark) {
  34. this.mark = mark;
  35. }
  36. }

 

 

 

 

 

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

 


  
  1. package com.test;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. public class ScoreStatistic{
  9. public ScoreStatistic(){
  10. }
  11. public Map<String,Integer> statistic1(List<Score> scores){
  12. Map<String,Integer> classcountMap = new HashMap<String, Integer>();
  13. Map<String,Integer> classsumMap = new HashMap<String, Integer>();
  14. Iterator<Score> it = scores.iterator();
  15. while (it.hasNext()) {
  16. Score temp = it.next();
  17. String cn = temp.classNumber;
  18. int cm = temp.mark;
  19. // System.out.println(it.next().classNumber+"+"+it.next().mark);
  20. if(classcountMap.get(cn)!=null){System.out.println("1");
  21. classcountMap.put(cn, classcountMap.get(cn)+1);
  22. classsumMap.put(cn, classsumMap.get(cn)+cm);
  23. }else{
  24. classcountMap.put(cn, 1);
  25. classsumMap.put(cn,cm);
  26. }
  27. }
  28. Map<String, Integer> finalMap = new HashMap<String, Integer>();
  29. Iterator it1=classcountMap.keySet().iterator();
  30. while(it1.hasNext()){
  31. String key;
  32. Integer value;
  33. Integer marksum;
  34. key=it1.next().toString();
  35. value=classcountMap.get(key);
  36. marksum=classsumMap.get(key); System.out.println(value);
  37. finalMap.put(key, marksum/value);
  38. System.out.println(key+":"+marksum/value);
  39. }
  40. return classsumMap;
  41. }
  42. public Map<String,Integer> statistic(List<Score> scores){
  43. Map<String,Integer> map = new HashMap<String,Integer>();
  44. Map<String,ClassRoom> roomMap = new HashMap<String,ClassRoom>();
  45. int avg;
  46. ClassRoom room = null;
  47. for(Score score:scores){
  48. String classNumber = score.getClassNumber();
  49. int mark = score.getMark();
  50. room = roomMap.get(classNumber);
  51. if(room == null){
  52. room = new ClassRoom(classNumber);
  53. roomMap.put(classNumber, room);
  54. }
  55. room.setTotal(room.getTotal()+mark);
  56. room.getList().add(score);
  57. //System.out.println(score.getClassNumber()+":"+avg);
  58. }
  59. Set<Map.Entry<String,ClassRoom>> set = roomMap.entrySet();
  60. Iterator<Map.Entry<String, ClassRoom>> it = set.iterator();
  61. while(it.hasNext()){
  62. Map.Entry<String, ClassRoom> entry = it.next();
  63. ClassRoom ro = entry.getValue();
  64. avg = ro.getTotal()/ro.getList().size();
  65. map.put(ro.getClassNumber(), avg);
  66. System.out.println(ro.getClassNumber()+":"+avg);
  67. }
  68. return map;
  69. }
  70. class ClassRoom{
  71. /**
  72. * 班级号。
  73. */
  74. public String classNumber;
  75. /**
  76. * 总分
  77. */
  78. private int total;
  79. private List<Score> list;
  80. public ClassRoom(){
  81. list = new ArrayList<Score>();
  82. }
  83. public ClassRoom(String classNumber){
  84. this();
  85. this.classNumber = classNumber;
  86. }
  87. public String getClassNumber() {
  88. return classNumber;
  89. }
  90. public void setClassNumber(String classNumber) {
  91. this.classNumber = classNumber;
  92. }
  93. public int getTotal() {
  94. return total;
  95. }
  96. public void setTotal(int total) {
  97. this.total = total;
  98. }
  99. public List<Score> getList() {
  100. return list;
  101. }
  102. public void setList(List<Score> list) {
  103. this.list = list;
  104. }
  105. }
  106. }

 

 

 

 

 

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/53183675

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。