题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
- 读入,每行数据,Scannner,nextLine
- 存储,名字可能重复,Map不可用,K,V结构转为自定义的属性Student,name,score,自然可以使用数组
- 排序,成绩相同,按照输入顺序输出,稳定算法,Arrays工具类,sort函数传入数组,传入Comparator,其中compare采用稳定形式的写法
- 按照成绩进行排序,同时参考排序标记,进行正序或逆序排列
- 输出,stream流
import java.util.*;
public class Main {
private static class Student{
private String name;
private Integer score;
public Student(String name, Integer score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
String sortedFlag = scanner.nextLine();//0逆序1正序
//名字有可能相同
Student[] students = new Student[n];
for (int i = 0; i < n; i++) {
String[] ss = scanner.nextLine().split(" ");
students[i] = new Student(ss[0],Integer.valueOf(ss[1]));
}
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student m1, Student m2) {
if (sortedFlag.equals("0")){
return m2.getScore() - m1.getScore();//1-2正序,2-1逆序
}
else{
return m1.getScore() - m2.getScore();//1-2正序,2-1逆序
}
}
});
Arrays.stream(students).forEach(student -> {
System.out.println(student.getName() +" " +student.getScore());
});
}
}