成绩排序怎么弄?
import java.util.*;
public class School{
Map<String,BanJi>schoolMap;
public School(){
schoolMap=new HashMap<String,BanJi>();
}
/**
* 添加班级
* @param banji
*/
public void addBanji(BanJi banji){
schoolMap.put(banji.getClassName(),banji);
}
/**
* 删除班级
* @param banji
*/
public void deleteBanji(BanJi banji){
schoolMap.remove(banji.getClassName());
}
/**
* 通过班级名称查询班级
* @param className
* @return
*/
public BanJi searchByName(String className) {
BanJi bj=null;
Set<String> setbanji=schoolMap.keySet();
for(String se:setbanji){
if(se.equals(className)){
bj=schoolMap.get(se);
break;
}
}
return bj;
}
/**
* 对各班语文成绩按平均分进行由大到小排序:
*/
public void sortChineseByAverage() {
List<Map.Entry<String,BanJi>> ln=new ArrayList<Map.Entry<String,BanJi>>();
}
public Map<String, BanJi> getSchoolMap() {
return schoolMap;
}
public void setSchoolMap(Map<String, BanJi> schoolMap) {
this.schoolMap = schoolMap;
}
}41
收起
正在回答
1回答
同学你好,老师这里对成绩排序的功能给同学一个思路,同学可以尝试实现一下:
1.在schoolMap存储的是班级编号和班级信息,而在班级信息中有所有学生的集合。那么可以单独声明一个Map集合,key就是班级名称,value是该班级的平均成绩值。
2.此时可以先遍历schoolMap,每次得到的班级信息中,取出学生集合,把集合中的成绩信息汇总并求得平均值。
3.将班级名称和平均成绩存储在第一步的集合中。
4.此时由于班级和平均成绩是存在Map集合中的,而Map集合无法直接排序,所以要将这些信息转换到一个List集合中。所以声明一个List集合,用于存储所有Entry对象。
5.声明一个比较器,比较规则就是根据Entry中的平均成绩做排序。
6.使用比较器对第四步的List进行排序。
7.输出排序后的List信息,即展示排序结果。这里需要注意的是,主班级列表应当不参与排序。
以上就是实现的思路,建议同学自己动手尝试实现一下。
祝学习愉快~
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星