成绩排序怎么弄?

成绩排序怎么弄?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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;
    }
 
 
 
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,老师这里对成绩排序的功能给同学一个思路,同学可以尝试实现一下:

1.在schoolMap存储的是班级编号和班级信息,而在班级信息中有所有学生的集合。那么可以单独声明一个Map集合,key就是班级名称,value是该班级的平均成绩值。

2.此时可以先遍历schoolMap,每次得到的班级信息中,取出学生集合,把集合中的成绩信息汇总并求得平均值。

3.将班级名称和平均成绩存储在第一步的集合中。

4.此时由于班级和平均成绩是存在Map集合中的,而Map集合无法直接排序,所以要将这些信息转换到一个List集合中。所以声明一个List集合,用于存储所有Entry对象。

5.声明一个比较器,比较规则就是根据Entry中的平均成绩做排序。

6.使用比较器对第四步的List进行排序。

7.输出排序后的List信息,即展示排序结果。这里需要注意的是,主班级列表应当不参与排序。

以上就是实现的思路,建议同学自己动手尝试实现一下。

祝学习愉快~


  • Itroads #1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    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());
        System.out.println("删除班级成功");
         
    }
    /**
     * 通过班级名称查找班级
     * @param className
     * @return
     */
    public Banji searchByName(String className) {
        Banji banji=null;
        Set<String> banjiSet=schoolMap.keySet();
        for(String b:banjiSet){
            if(b.equals(className)){
                banji=schoolMap.get(b);
            }
        }
        return banji;
         
    }
    /**
     * 对语文平均成绩从小到大排序
     */
    public void sortChineseByAverage() {
        //key为班级名称,value是该班级的平均成绩
        Map<String,String> score=new HashMap<String,String>();
         Iterator<Banji> information=schoolMap.values().iterator();
         while(information.hasNext()){
             System.out.println(information.next().getStuList());
         }
         for(int i=0;i<=information)
          
          
     
    }
    /**
     * 对数学平均成绩从小到大排序
     */
    public void sortMathByAverage() {
         
    }
    /**
     * 显示所有班级名称
     */
    public void displayBanJiName() {
        Set<String> banjiSet=schoolMap.keySet();
        for(String s:banjiSet){
            System.out.println(s);
        }
    }
        public Map<String, Banji> getSchoolMap() {
            return schoolMap;
        }
        public void setSchoolMap(Map<String, Banji> schoolMap) {
            this.schoolMap = schoolMap;
        }
         
    }
    第二步怎么汇总取平均值呢


    2022-04-14 08:44:19
  • 同学你好,同学可以先查询出班级的总成绩,然后根据班级中的人数计算出平均分,将平均分添加到集合中,最后进行排序。参考代码如下所示:

    https://img1.sycdn.imooc.com//climg/614c2980092e210c11570757.jpg

    祝学习愉快!

    2022-04-14 09:50:12
  • 老师,您这个方法里怎么得到的这个分数  getChinese   在学生类增加了一个分数属性吗? 然后增加getter和setter方法?

    2022-05-27 22:44:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码