0
    Collections.sort(orderedStudents, new Comparator<Student>() {
        public int compare(Student s1, Student s2) {
            return s2.getAggregate().compareTo(s1.getAggregate());
        }
    });

这是我使用的方法。

4

2 回答 2

1

问题在于getAggregate方法:

public Double getAggregate(){
    double d = 0;
    double aggregatescore = d/marks.size();
    return aggregatescore;
}

由于 d 被设置为零,这个方法将总是返回 0,所以该Collections.sort(...)方法什么也不做

于 2015-04-15T17:42:58.297 回答
0

您编写的代码会写入文件、对数据进行排序、丢弃数据。如果您希望结果出现在文件中,则必须在写入前进行排序。

更像这样:

   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。

于 2015-04-15T17:44:10.663 回答