对复杂对象数组进行排序

131 篇文章 2 订阅

import java.util.Arrays;

class Car implements Comparable{//类Car实现Comparable接口,按自己要求重写compareTo()
        private String make;
        private int year;
        private int mileage;
        public Car(String make,int year,int mileage){
               this.make=make;
               this.year=year;
               this.mileage=mileage;
         }
        //此例子是根据mileage来比较对象
        public int compareTo(Object obj){
              if(obj instanceof Car){
                    Car car=(Car)obj;
                    if(this.mileage>car.getMileage())
                           return 1;
                    else if(this.mileage<car.getMileage())
                           return -1;
                   }
                   return 0;
       }
      public String getMake() {
              return make;
      }
     public void setMake(String make) {
             this.make = make;
     }
     public int getYear() {
            return year;
     }
     public void setYear(int year) {
            this.year = year;
     }
     public int getMileage() {
            return mileage;
     }
    public void setMileage(int mileage) {
            this.mileage = mileage;
    }
    @Override
    public String toString() {
           StringBuffer buffer=new StringBuffer();
           buffer.append("Make:"+make+"\n");
           buffer.append("Year:"+year+"\n");
           buffer.append("Mileage:"+mileage+"\n");
           return buffer.toString();
    }
}
public class CompareArray{
      public void comparableExample(){
             //Car对象实现Comparable接口
             Car car1=new Car("Audi",2006,5000);
            Car car2=new Car("BMW",2007,5000);
            Car car3=new Car("Chrysler",2007,4000);
            System.out.println("car1 equals car2:"+car1.compareTo(car2));
            System.out.println("car1 equals car3:"+car1.compareTo(car3));
            System.out.println("car2 equals car3:"+car2.compareTo(car3));
            System.out.println();
            //排序
            Car[] carArray=new Car[]{car1,car2,car3};
            Arrays.sort(carArray);
            //打印
            for(Car car:carArray)
                 System.out.println(car.toString()); 
      }
     public static void main(String args[]){
            new CompareArray().comparableExample();
     }
}

输出结果:

car1 equals car2:0
car1 equals car3:1
car2 equals car3:1

Make:Chrysler
Year:2007
Mileage:4000

Make:Audi
Year:2006
Mileage:5000

Make:BMW
Year:2007
Mileage:5000

 注意:只要是实现了Comparable接口的都可以通过这样来进行排序。String也是实现了Comparable接口

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值