/***
* 描述:将学生成绩按班级计算每一门课的平均分。
* 入参:
* 参见studentScoreList
* 需求:
* 1、得到班级课程平均分的一个list,并打印出来。包含字段:班级名称、课程、平均分。
* 2、按平均分降序排列。
*/
public class Common {
public static void main(String[] args) {
/***
* 题 目:将学生成绩按班级计算每一门课的平均分。
* 入参:
* 参见studentScoreList
* 需求:
* 1、得到班级课程平均分的一个list,并打印出来。包含字段:班级名称、课程、平均分。
* 2、按平均分降序排列。
*/
List<Map<String, Object>> studentScoreList = getStudentScores();
// 1.定义结果集
List<Map<String, Object>> result = new ArrayList<>();
// 2.定义分组结果集 key 是 班级#课程名称 value是 map
Map<String, List<Map<String, Object>>> groupList = new HashMap<>();
// 分组
for (Map<String, Object> map : studentScoreList) {
String key = map.get("班级") + "#" + map.get("课程名称");
if (groupList.get(key) == null) {
List<Map<String, Object>> list = new ArrayList<>();
groupList.put(key, list);
}
groupList.get(key).add(map);
}
// 求平均分
for (Map.Entry<String, List<Map<String, Object>>> entry : groupList.entrySet()) {
String key = entry.getKey();
List<Map<String, Object>> list = entry.getValue();
if (list.size() > 0) {
int sum = 0;
for (Map<String, Object> map : list) {
sum += Integer.valueOf(map.get("成绩").toString());
}
double avg = sum * 1.0 / list.size();
Map<String, Object> tempMap = new HashMap<>();
tempMap.put("班级", key.split("#")[0]);
tempMap.put("课程名称", key.split("#")[1]);
tempMap.put("平均分", avg);
result.add(tempMap);
}
}
// 把result排序
Collections.sort(result, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
double d1 = Double.valueOf(o1.get("平均分").toString());
double d2 = Double.valueOf(o2.get("平均分").toString());
Integer num1 = (int) d1;
Integer num2 = (int) d2;
return num2.compareTo(num1);
}
});
// 遍历result
for (Map<String, Object> map : result) {
System.out.println(map.get("班级") + "\t" + map.get("课程名称") + "\t" + map.get("平均分"));
}
}
private static List<Map<String, Object>> getStudentScores() {
List<Map<String, Object>> studentScoreList = new ArrayList<Map<String, Object>>();
Map<String, Object> studentScore1 = new HashMap<String, Object>();
studentScore1.put("班级", "一班");
studentScore1.put("课程名称", "语文");
studentScore1.put("姓名", "王一");
studentScore1.put("成绩", "85");
studentScoreList.add(studentScore1);
Map<String, Object> studentScore2 = new HashMap<String, Object>();
studentScore2.put("班级", "一班");
studentScore2.put("课程名称", "数学");
studentScore2.put("姓名", "王一");
studentScore2.put("成绩", "89");
studentScoreList.add(studentScore2);
Map<String, Object> studentScore3 = new HashMap<String, Object>();
studentScore3.put("班级", "一班");
studentScore3.put("课程名称", "语文");
studentScore3.put("姓名", "王二");
studentScore3.put("成绩", "78");
studentScoreList.add(studentScore3);
Map<String, Object> studentScore4 = new HashMap<String, Object>();
studentScore4.put("班级", "一班");
studentScore4.put("课程名称", "数学");
studentScore4.put("姓名", "王二");
studentScore4.put("成绩", "98");
studentScoreList.add(studentScore4);
Map<String, Object> studentScore11 = new HashMap<String, Object>();
studentScore11.put("班级", "二班");
studentScore11.put("课程名称", "语文");
studentScore11.put("姓名", "王三");
studentScore11.put("成绩", "74");
studentScoreList.add(studentScore11);
Map<String, Object> studentScore12 = new HashMap<String, Object>();
studentScore12.put("班级", "二班");
studentScore12.put("课程名称", "数学");
studentScore12.put("姓名", "王三");
studentScore12.put("成绩", "97");
studentScoreList.add(studentScore12);
Map<String, Object> studentScore13 = new HashMap<String, Object>();
studentScore13.put("班级", "二班");
studentScore13.put("课程名称", "语文");
studentScore13.put("姓名", "王四");
studentScore13.put("成绩", "77");
studentScoreList.add(studentScore13);
Map<String, Object> studentScore14 = new HashMap<String, Object>();
studentScore14.put("班级", "二班");
studentScore14.put("课程名称", "数学");
studentScore14.put("姓名", "王四");
studentScore14.put("成绩", "83");
studentScoreList.add(studentScore14);
return studentScoreList;
}
}
版权声明:本文为qq_37281398原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。