java解法,主要用到Comparator接口
import java.util.*; public class Main{ //先定义一个成绩表类 class grade_list{ public String name; public int grade; public grade_list(String name, int grade){ super(); this.name = name; this.grade = grade; } } public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = Integer.parseInt(sc.nextLine()); int tmp = Integer.parseInt(sc.nextLine()); Set<String[]> str = new LinkedHashSet<>();//用链表保存输入的名字和分数因为同分时按输入的顺序排,所以用链表存储 List<grade_list> list = new ArrayList<>();//列表保存成绩单对象 for(int i=0; i<n; i++){ str.add(sc.nextLine().split(" "));//录入成绩 } for(String[] arr:str){ String na = arr[0]; int g = Integer.parseInt(arr[1]); list.add(new Main().new grade_list(na,g)); } Collections.sort(list, new Comparator<grade_list>(){ @Override public int compare(grade_list o1,grade_list o2){ if(tmp==0) return o2.grade - o1.grade;//当tmp=0时,分数按升序排 else return o1.grade - o2.grade;//当tmp=1时,分数按降序排 } }); for(grade_list person:list){//遍历打印 System.out.println(person.name+ " "+person.grade); } } } }