题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

使用ArrayList进行自定义排序
import java.io.IOException;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner sc = new Scanner(System.in);
        int count = Integer.parseInt(sc.nextLine());
        int sortType = Integer.parseInt(sc.nextLine());
        ArrayList<Grade> list = new ArrayList<>();
        // 将输入的数据存入ArrayList中
        for(int i = 0; i < count; ++i){
            String str = sc.nextLine();
            String name = str.split(" ")[0];
            int grade = Integer.parseInt(str.split(" ")[1]);
            list.add(new Grade(grade, name, i));
        }
        // 自定义排序
        if(sortType == 0){
            list.sort(new Comparator<Grade>() {
                @Override
                public int compare(Grade o1, Grade o2) {
                    return o1.grade == o2.grade ? o1.index - o2.index : o2.grade - o1.grade;
                }
            });
        } else if(sortType == 1){
            list.sort(new Comparator<Grade>() {
                @Override
                public int compare(Grade o1, Grade o2) {
                    return o1.grade == o2.grade ? o1.index - o2.index : o1.grade - o2.grade;
                }
            });
        }
        for (Grade grade : list) {
            System.out.println(grade.name + " " + grade.grade);
        }
    }

    private static class Grade{
        public int grade;
        public String name;
        public int index;

        public Grade(int grade, String name, int index) {
            this.grade = grade;
            this.name = name;
            this.index = index;
        }
    }
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
06-20 14:14
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务