1028 List Sortingjava

    xiaoxiao2022-07-05  177

    Excel can sort records according to any column. Now you are supposed to imitate this function.

    Input Specification:

    Each input file contains one test case. For each case, the first line contains two integers N (≤10​5​​) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

    Output Specification:

    For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

    Sample Input 1:

    3 1 000007 James 85 000010 Amy 90 000001 Zoe 60

    Sample Output 1:

    000001 Zoe 60 000007 James 85 000010 Amy 90

    Sample Input 2:

    4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98

    Sample Output 2:

    000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60

    Sample Input 3:

    4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90

    Sample Output 3:

    000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Main { /** * 最后一组数据运行超时 * */ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String inputString = br.readLine(); int n = Integer.parseInt(inputString.split("\\s+")[0]); int c = Integer.parseInt(inputString.split("\\s+")[1]); List<Student1028> student1028s = new ArrayList<>(); for (int i=0; i<n; ++i) { Student1028 temp = new Student1028(); String tempString = br.readLine(); String[] eachString = tempString.split("\\s+"); temp.id = eachString[0]; temp.name = eachString[1]; temp.score = Integer.parseInt(eachString[2]); student1028s.add(temp); } if (c==1) { Collections.sort(student1028s, new MyCompare1()); } else if (c==2) { Collections.sort(student1028s, new MyCompare2()); } else { Collections.sort(student1028s, new MyCompare3()); } for (int i=0; i<student1028s.size(); ++i) { Student1028 temp = student1028s.get(i); System.out.println(temp.id+" "+temp.name+" "+temp.score); } } } class MyCompare1 implements Comparator<Student1028> { @Override public int compare(Student1028 o1, Student1028 o2) { return o1.id.compareTo(o2.id); } } class MyCompare2 implements Comparator<Student1028> { @Override public int compare(Student1028 o1, Student1028 o2) { if (!o1.name.equals(o2.name)) { return o1.name.compareTo(o2.name); } else { return o1.id.compareTo(o2.id); } } } class MyCompare3 implements Comparator<Student1028> { @Override public int compare(Student1028 o1, Student1028 o2) { int score1 = o1.score; int score2 = o2.score; if (score1!=score2) { return o1.score.compareTo(o2.score); } else { return o1.id.compareTo(o2.id); } } } class Student1028{ public String id; public String name; public Integer score; @Override public String toString() { return "Student1028{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", score=" + score + '}'; } }

     

    最新回复(0)