我有一个带有学生对象的ArrayList(名称,数学标记,物理标记)。如何对ArrayList进行排序并使用第一个最高数字/ s进行编辑,然后按第二个最高数字进行编辑,依此类推。例如,我有以下对象值:
ArrayList<> allStudents = new ArrayList();
allStudents.add(new Student("A", 80, 94) );
allStudents.add(new Student("B", 98, 91) );
allStudents.add(new Student("F", 70, 84) );
allStudents.add(new Student("C", 98, 92) );
allStudents.add(new Student("H", 99, 93) );
我会寻找编号最高的学生,我得到H.我编辑对象如:&#34; H&#34;,97,90并将其保存回ArraList。我再次寻找第二高,但在这里我有学生&#34; B&#34;和&#34; C&#34;,我可以在数学中看到它们相同的数字,但在物理C中有最高的数字,所以我将编辑&#34; C&#34;,96,90并将其保存回ArrayList等等上。在哪个学生已经编辑过,我不会将它们用于编辑和保存,等等。如果有人请帮助我!提前致谢
答案 0 :(得分:3)
为您的学生对象实现Comparable接口,并指定您希望它如何比较。
这是一个很好的例子: http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/
答案 1 :(得分:1)
您需要创建一个可以是匿名的比较器或类,并在Student
中为您的标记执行get方法,这样您就可以在比较器中使用它来比较用于排序的标记
示例:强>
ArrayList<Student> allStudents = new ArrayList();
allStudents.add(new Student("A", 80, 94));
allStudents.add(new Student("B", 98, 91));
allStudents.add(new Student("F", 70, 84));
allStudents.add(new Student("C", 98, 92));
allStudents.add(new Student("H", 99, 93));
Collections.sort(allStudents, new Comparator<Student>() {
public int compare(Student s, Student s2) {
return s.getMark() - s2.getMark();
}
});