此方法的目的是根据个人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个小时
答案 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。
您需要决定同一个人的构成以及如何对其进行排序。按字母顺序基于名称?姓名和身份证?无论你的节目是什么。