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