如何从Java Object / ArrayList中排序并获得最高价值

时间:2014-06-03 22:57:35

标签: java object arraylist

我有一个带有学生对象的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等等上。在哪个学生已经编辑过,我不会将它们用于编辑和保存,等等。如果有人请帮助我!提前致谢

2 个答案:

答案 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();
            }
        });