HJ68 成绩排序Arrays.sort – 三郎君的日常

Java基础 / 算法设计与分析 / 面试 · 2022年5月29日 0

HJ68 成绩排序Arrays.sort

描述

给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩

都按先录入排列在前的规则处理。

例示:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩
peter     96
jack      70
Tom       70
smith     67

输入描述:

第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入:

3
0
fang 90
yang 50
ning 70

输出:

fang 90
ning 70
yang 50

示例2

输入:

3
1
fang 90
yang 50
ning 70

输出:

yang 50
ning 70
fang 90
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int sNum = in.nextInt();
        int type = in.nextInt();
        List<Student> list = new ArrayList<>();
        for (int i = 0; i < sNum; i++) {
            list.add(new Student(in.next(), in.nextInt(), i));
        }
        if (type == 0){
            // 分数高到低
            list.stream()
                    .sorted(Comparator.comparing(Student::getScore).reversed().thenComparing(Student::getOrder))
                    .forEach(student -> System.out.println(student.getName() + " " + student.score));
        }else {
            list.stream()
                    .sorted(Comparator.comparing(Student::getScore).thenComparing(Student::getOrder))
                    .forEach(student -> System.out.println(student.getName() + " " + student.score));
        }
    }
}

class Student {
    String name;
    int score;
    int order;

    public Student(String name, int score, int order) {
        this.name = name;
        this.score = score;
        this.order = order;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getOrder() {
        return order;
    }

    public void setOrder(int order) {
        this.order = order;
    }
}