JAVA语言中,有许多类别可以依据某种条件进行排序的动作,例如Int, Double, String等。事实上,我们也可以把自己开发的类别(尤其是数据类别)加上这个功能,只要我们操作Comparable介面中的compareTo()方法。以下将以一个简单的例子来说明做法。
假设我们封装了一个代表母鸡的数据类别,其中包含了年龄、平均下蛋数、重量、编号等,并且希望可以依据平均下蛋数的多少来排序。源程序如下:
public class myHen implements Comparable
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
System.out.print(henhen[i].getEggs());
System.out.print("\n");
}
/*接下来我们进行排序这里很重要
*我们以Arrays静态类别的sort()方法来排序。
*/
Arrays.sort(henhen); //排序
System.out.print("以下有排序过");
//再次的把母鸡列出来看看
for(int j=0;j
System.out.print(henhen[j].getEggs());
System.out.print("\n");
}
}
}
结果
可以看到上面的测试程序输出的结果如下:
4
3
7
以下有排序过
3
4
7
好了,这样各位是不是清楚怎么应用了呢^^
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
