У меня есть текстовый файл, содержащий информацию об учениках, и он имеет 5 столбцов: ID, FName, LName, Возраст, Оценка.
Я хочу отсортировать строки файла по оценкам ученика, но это не работает. Вот мой метод:
public static void sortAndShow() throws Exception {
ArrayList list = new ArrayList();
BufferedReader reader = new BufferedReader(new FileReader(originalFile));
String str = reader.readLine();
while (str != null) {
String[] detailsSt = str.split(" ");
int id = Integer.parseInt(detailsSt[0]);
String name = detailsSt[1];
String lastname = detailsSt[2];
int age = Integer.parseInt(detailsSt[3]);
int grade = Integer.parseInt(detailsSt[4]);
list.add(new Student(id, name, lastname, age, grade));
str = reader.readLine();
}
Collections.sort(list, new gradeCompare());
PrintWriter writer = new PrintWriter(new FileWriter(sortedFile, false));
for (Student st : students) {
writer.write((st.getStNum() + " " + st.getFirstName() + " " + st.getLastName() + " " + st.getAge() + " " + st.getGrade() + "\n"));
}
reader.close();
writer.close();
}
И мой внутренний класс, который выполняет процесс сравнения:
static class gradeCompare implements Comparator {
@Override
public int compare(Student o1, Student o2) {
return o2.getGrade() - o1.getGrade();
}
}
Мой текстовый файл перед сортировкой:
101 Jeff King 18 12
102 Tim Woods 17 19
Но после сортировки запишите то же содержимое в новый файл:
101 Jeff King 18 12
102 Tim Woods 17 19
Я хочу, чтобы после сортировки мой текстовый файл выглядел следующим образом (последний столбец — это оценка):
102 Tim Woods 17 19
101 Jeff King 18 12