成绩排序怎么弄?
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信息,即展示排序结果。这里需要注意的是,主班级列表应当不参与排序。
以上就是实现的思路,建议同学自己动手尝试实现一下。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星