以最有效的方式在java中对类的对象进行排序

时间:2015-05-18 19:33:54

标签: java arrays multithreading oop collections

我有Car类,它的距离可变。我想以最有效的方式对汽车类的对象进行排序。我已尝试下面的代码进行排序,但它不是一种有效的方法。任何人都可以用最有效的编码方式帮助我。

for(int j=0;j<get_car.no_of_cars;j++)
{
   for(int i=j;i<get_car.no_of_cars;i++)
   {

        if(get_car.Hundai[j].distance_covered>get_car.Hundai[i].distance_covered)                            
        {
            A[i]=get_car.Hundai[j];
            get_car.Hundai[j]=get_car.Hundai[i];
            get_car.Hundai[i]= A[i];        
        }
   }
}

在上面的代码中,huandai是汽车对象。

1 个答案:

答案 0 :(得分:1)

您可以使用比较器。

鉴于班级汽车:

class Car {
       private long distance;

       public long getDistance(){
          return this.distance;
       }

       public void setDistance(long distance){
          this.distance = distance;
       }
}

和比较器DistanceComparator:

class DistanceComparator implements Comparator<Car> {
    @Override
    public int compare(Car a, Car b) {
        return a.distance < b.distance ? -1 : a.distance == b.distance ? 0 : 1;
    }
}

使用比较器对Car对象进行排序:

class Main{
    private static void main(String[] args){
      Foo foo = new Foo();
      List<Car> carList = foo.getAllCars();
      Collections.sort(car, new DistanceComparator());
    }
}