簡體   English   中英

冒泡排序對象的Arraylist

[英]Bubble sort Arraylist of objects

這種方法的目的是根據一個人的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個小時

對象帶有內置的compareTo()方法,但是最好覆蓋默認值。 請參閱Java文檔中的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。

您需要確定什么構成同一個人以及應該如何對他們進行排序。 按名稱的字母順序排列? 名稱和編號? 無論您的程序是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM