Java 如何对Web服务的结果进行排序和保留?
我有一个类,其中有一个对象列表。我需要根据列表对象的浮点值对列表进行排序,但使用Array.sort方法后,以下代码不起作用。我打印了集合,但学生列表不会根据GPA进行排序 学校班级Java 如何对Web服务的结果进行排序和保留?,java,sorting,arraylist,comparable,Java,Sorting,Arraylist,Comparable,我有一个类,其中有一个对象列表。我需要根据列表对象的浮点值对列表进行排序,但使用Array.sort方法后,以下代码不起作用。我打印了集合,但学生列表不会根据GPA进行排序 学校班级 public class School{ private List<Student> students; public School(){ this.students = new ArrayList(); } } 你可以这样分类: Collections.sort(this.
public class School{
private List<Student> students;
public School(){
this.students = new ArrayList();
}
}
你可以这样分类:
Collections.sort(this.school.getStudents());
您还应在此处指定:
this.students = new ArrayList<Student>();
你可以这样分类:
Collections.sort(this.school.getStudents());
您还应在此处指定:
this.students = new ArrayList<Student>();
问题是您正在对中间结果进行排序—一个不存储在任何位置的数组—并且您没有对它做任何操作 你现在主要做的是:
Object[] intermediate = this.school.getStudents().toArray();
Arrays.sort(intermediate);
//do nothing with intermediate
解决方案是使用更好的方法——或者存储中间数组,对其进行排序,然后将其还原到学生列表中更差的地方问题是您正在对中间结果进行排序——一个未存储在任何位置的数组——而您没有对其进行任何操作 你现在主要做的是:
Object[] intermediate = this.school.getStudents().toArray();
Arrays.sort(intermediate);
//do nothing with intermediate
解决方案是使用更好的方法,或者存储中间数组,对其进行排序,然后将其恢复到学生列表中更差的位置this.school.getStudents.toArray创建一个临时数组实例,array.sort对临时数组进行排序,而不是实际的ArrayList。您可以使用Collections.sorttthis.school.getStudents;相反,this.school.getStudents.toArray创建一个临时数组实例,array.sort对临时数组进行排序,而不是对实际的ArrayList进行排序。您可以使用Collections.sorttthis.school.getStudents;相反,您可以使用Collections.sorttthis.school.getStudents;或Collections.reversethis.school.getStudents;分别用于升序和降序。您可以使用Collections.sortthis.school.getStudents;或Collections.reversethis.school.getStudents;分别用于升序和降序。不起作用不是一个很好的问题描述。@qqilihq谢谢我添加了更多细节在重新阅读最后一行之后,问题是:toArray从列表中创建了一个新数组。只有数组被排序,而不是列表本身,这显然是您想要的。有关如何解决此问题,请参见下面的@donfoxx答案。无效不是一个很好的问题描述。@qqilihq谢谢我添加了更多详细信息在重新阅读最后一行后,问题是:toArray从列表中创建一个新数组。只有数组被排序,而不是列表本身,这显然是您想要的。关于如何解决这个问题,请参见下文@donfoxx的答案。