如何製作一個可排序的JAVA物件
JAVA語言中,有許多類別可以依據某種條件進行排序的動作,例如Int, Double, String等。事實上,我們也可以把自己開發的類別(尤其是資料類別)加上這個功能,只要我們實作Comparable介面中的compareTo()方法。以下將以一個簡單的例子來說明做法。
假設我們封裝了一個代表母雞的資料類別,其中包含了年齡、平均下蛋數、重量、編號等,並且希望可以依據平均下蛋數的多少來排序。程式碼如下:
public class myHen implements Comparable<Object&rt;{ private int Age; private int Eggs; private double Weight; private int No; public void setAge(int age){ this.Age=age; } public void setEggs(int eggs){ this.Eggs=eggs; } public void setWeight(double weight){ this.Weight=weight; } public void setNo(int no){ this.No=no; } public int getAge(){ return Age; } public int getEggs(){ return Eggs; } public double getWeight(){ return Weight; } public in getNo(){ return No; } @Override public int compareTo(Object arg0) throws ClassCastException{ myHen obj=(myHen) arg0; if(this.Eggs > obj.getEggs()){return 1;} if(this.Eggs < obj.etEggs()){return -1;} else{return 0;} } }
說明
重點請看到@Override之後,由於實作是Comparable介面,所以要覆寫compareTo()方法,內容怎麼寫無所謂,重點是若回傳值為1,那麼將會排在前頭,若是回傳值為-1那麼將排序在後。開發者可以依照自己所需要的判斷方式來達成。
實際應用
物件製作好了之後,讓我們來看看怎麼在實際應用中排序我們的母雞們,首先,我們先以一個測試的小程式生產三隻小母雞。
import java.util.Arrays;
import myHen;
public class myHenSortTest {
public static void main(String[] args) {
myHen[] henhen=new myHen[4];
henhen[0]=new myHen();
henhen[1]=new myHen();
henhen[2]=new myHen();
//在這裡我們只把平均下蛋數資訊放進每隻雞裡
henhen[0].setEggs(4);
henhen[1].setEggs(3);
henhen[2].setEggs(7);
//未排序之前先把每隻雞列出來看看
for(int i=0;i<henhen.length;i++){
System.out.print(henhen[i].getEggs());
System.out.print("\n");
}
/*接下來我們進行排序這裡很重要
*我們以Arrays靜態類別的sort()方法來排序。
*/
Arrays.sort(henhen); //排序
System.out.print("以下有排序過");
//再次的把母雞列出來看看
for(int j=0;j<henhen.length;j++){
System.out.print(henhen[j].getEggs());
System.out.print("\n");
}
}
}
結果
可以看到上面的測試程式輸出的結果如下: 4 3 7 以下有排序過 3 4 7
好了,這樣各位是不是清楚怎麼應用了呢^^
沒有留言:
張貼留言