这个需求看起来就是个排序问题,对于Java来说是很简单的。本身我想着用Map来保存原数据,但是感觉不是很好使,考虑到给出的原数据是成绩,索性就定义一个类。

之后就是重写List的Compare方法了:

package huawei;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int a = in.nextInt();
            int b = in.nextInt(); // 0 or 1
            List<Student> list = new ArrayList<>();
            for (int i = 0; i < a; i++) {
                Student student = new Student(in.next(), in.nextInt());
                list.add(student);
            }

            if (b == 1) {
                list.sort(Comparator.comparingInt(Student::getGrade));
            }
            if (b == 0) {
                list.sort((o1, o2) -> o2.getGrade() - o1.getGrade());
            }

            list.forEach(System.out::println);
        }
    }
}

class Student {
    private String name;

    private int grade;

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

    public String getName() {
        return name;
    }

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

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    @Override
    public String toString() {
        return this.name + " " + this.grade;
    }
}