用Comparator接口自定义排序

来源:互联网 发布:阿里云防ddos 编辑:程序博客网 时间:2024/04/28 03:48

求一个班级成绩的平均值和成绩排名(要名次和姓名),姓名用ABC表示。例:第1名:C 100.


import java.util.*;public class Test {    public static void main(String[] args) {        int[] score = {90,80,70,60,65,75,85,95,100,55,58,61,71,74,76,81,88,92,99,97};        String[] name = new String[20];        for(int i = 0; i < score.length; i++){            name[i] = String.valueOf((char)('A' + i));        }        //存入list用于排序        List<Student> list = new LinkedList<Student>();        int sumScore = 0;        for(int i = 0; i < score.length; i++){            list.add(new Student(name[i], score[i]));            sumScore += list.get(i).getScore();        }        System.out.println("全班平均分为:" + 1.0*sumScore/list.size());        Collections.sort(list, new MyComp());        for(int i = 0; i < list.size(); i++){            System.out.println("第" + (i+1) + "名:" + list.get(i).getName() + " " + list.get(i).getScore());        }    }}//学生类class Student{    private int score;    private String name;    public Student(String name, int score){        this.score = score;        this.name = name;    }    public int getScore(){        return score;    }    public String getName(){        return name;    }}//自定义排序class MyComp implements Comparator<Student>{    public int compare(Student o1, Student o2){        if(o1.getScore() < o2.getScore()) return 1; //分数低的排后面        if(o1.getScore() == o2.getScore()) return 0;        return -1;    }}


0 0