如何使用使用object的collection.sort对此ArrayList进行排序?

时间:2016-05-18 09:37:40

标签: java sorting collections

import java.util.*;
class student
{
    int roll;
    int marks;
    student(int roll, int marks)
    {
        this.roll=roll;
        this.marks=marks;
    }
}

public class eList4
{
public static void main(String args[])
{
    Scanner scann=new Scanner(System.in);
List <student> mylist= new ArrayList<student>();
int n=scann.nextInt();
while((n--)>0)
{
    System.out.println(n+" enter student details:");
    int roll=scann.nextInt();
    int marks=scann.nextInt();
    student temp=new student(roll, marks);
    mylist.add(temp);
}

Collections.sort(mylist, new Comparator<student>() {
    @Override
    public int compare(student a, student b) {
        int k=b.roll;
        int kk=a.roll;
        if(b.roll>a.roll)
        {
            return 1;
        }
        else
            return 0;
    }
});
System.out.println(mylist);
Iterator itr = mylist.iterator();
i=0;
while(itr.hasNext())
{
    student temp=itr.next();

    System.out.println(temp.roll +"  "+temp.marks);

}   

}

}
好吧,这给了我相同的结果,根本没有排序。 我如何根据roll no.s排序? 这给出了相同的结果。 好吧,这给了我相同的结果,根本就没有排序。 我如何根据roll no.s排序? 这给出了相同的结果。

1 个答案:

答案 0 :(得分:0)

您没有正确比较学生班级的“roll”属性,请使用以下代码:

        @Override
        public int compare(student a, student b) {
            return ((Integer)a.roll).compareTo(((Integer)b.roll));
        }

我们无法使用compareTo()方法比较原始数据类型,因此将“roll”属性转换为Integer包装类。您的比较方法已准备好进行比较。

希望这有效!