题解 | #成绩排序#
成绩排序
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;
}
}
}