冒泡排序对象的Arraylist

时间:2016-01-05 16:36:44

标签: java sorting bubble-sort compareto cannot-find-symbol

此方法的目的是根据个人ID进行冒泡分类

然而在这方面:

if (al.get(i).compareTo(al.get(i+1)) > 0 )

它声明:找不到符号 - 方法compareTo(java.lang.Object)

这是班级人员(不是非常重要)/ / / /

public class Person implements java.io.Serializable
{
  String personID;
  String name;
  byte dayDOB;
  byte monthDOB;
  short yearDOB;
  String telNum;
}

这是排序方法:

public static void sort(ArrayList al)
  {
   Person p;
   String temp;
   boolean flag = true;

   System.out.println("Database will be sorted acc to ID ");
   System.out.println();


    while (flag = true)
    {
        flag = false;

        for (int i=0;i<al.size()-1;i++)    
        {
            p = (Person) al.get(i);

            if (al.get(i).compareTo(al.get(i+1)) > 0 )
            {
                temp = al.get(i);
                al.set(i,al.get(i+1) );
                al.set(i+1, temp);
                flag = true;
            }
        }
    }
    }

PS;在代码方面我是新手,并且已经修改了这段代码长达7个小时

1 个答案:

答案 0 :(得分:0)

对象带有内置的compareTo()方法,但最好覆盖默认值。 See the java documentation for compareTo()。这应该会简化你的代码。

您的Person类需要实现Comparable并在类声明中包含它。然后,您可以编写类似这样的compareTo()方法:

public int compareTo(Person b) {
   return this.name.compareTo(b.getName());
}

compareTo()方法应返回-1,0或1.如果在主类中调用a.compareTo(b),如果对象排序到同一位置,则compareTo()应返回零(即相等),如果对象a应在对象b之前排序,则为-1;如果对象a应在b之后排序,则为1。

您需要决定同一个人的构成以及如何对其进行排序。按字母顺序基于名称?姓名和身份证?无论你的节目是什么。