我有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是汽车对象。
答案 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());
}
}