【问题标题】:How to sort this ArrayList using collection.sort that uses object?如何使用使用对象的 collection.sort 对这个 ArrayList 进行排序?
【发布时间】:2016-05-18 09:37:40
【问题描述】:
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);

}   

}

}

这给了我相同的结果,根本没有排序。 如何根据卷号进行排序? 这给出了相同的结果。 好吧,这给了我相同的结果,根本没有排序。 如何根据卷号进行排序? 这给出了相同的结果。

【问题讨论】:

  • 你的compare 方法永远不会返回-1。
  • 那么我应该怎么做才能使它正常工作?
  • 返回 b.rolla.roll? 1:0;在你的比较方法中
  • 这不起作用@Unknown
  • 什么不起作用?它应该工作

标签: java sorting collections


【解决方案1】:

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

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

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

希望这行得通!

【讨论】:

  • 很高兴知道。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 2016-02-01
  • 2013-01-06
相关资源
最近更新 更多