Collections.sort(orderedStudents, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.getAggregate().compareTo(s1.getAggregate());
}
});
这是我使用的方法。
问题在于getAggregate
方法:
public Double getAggregate(){
double d = 0;
double aggregatescore = d/marks.size();
return aggregatescore;
}
由于 d 被设置为零,这个方法将总是返回 0,所以该Collections.sort(...)
方法什么也不做
您编写的代码会写入文件、对数据进行排序、丢弃数据。如果您希望结果出现在文件中,则必须在写入前进行排序。
更像这样:
Collections.sort(orderedStudents, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.getAggregate().compareTo(s1.getAggregate());
}
});
// Now we can do writing.
writer = new PrintWriter(new FileOutputStream(new File("RankedList.txt")));
for (Student s: orderedStudents) {
s.writeToPW(writer);
}
writer.close();
如果订单看起来是降序而不是升序,则在比较函数中交换 s1 和 s2。