Java 按价格属性对arraylist中的对象进行排序

Java 按价格属性对arraylist中的对象进行排序,java,arraylist,Java,Arraylist,我在做一个非常小的项目,我有一个汽车对象的数组列表,我试图按价格升序打印所有的汽车。当我在网上环顾四周时,每个人似乎都在使用数组而不是arraylist 关于如何使用数组列表实现这一点,有什么想法吗?下面是我的代码 public ArrayList<Car> sortPriceAcending(ArrayList<Car> cars) { ArrayList<Car> sortedCars = new ArrayList<Car>();

我在做一个非常小的项目,我有一个汽车对象的数组列表,我试图按价格升序打印所有的汽车。当我在网上环顾四周时,每个人似乎都在使用数组而不是arraylist

关于如何使用数组列表实现这一点,有什么想法吗?下面是我的代码

public ArrayList<Car> sortPriceAcending(ArrayList<Car> cars) {

    ArrayList<Car> sortedCars = new ArrayList<Car>();
    Car temp;

    for (int j = 0; j < cars.size() - 1; j++) {

        for (int i = 0; i < cars.size() - 1; i++) {
            Car car = (Car) cars.get(i);
            Car car1 = (Car) cars.get(i + 1);
            if (car.getPrice() > car1.getPrice()) {
                temp = car;
                cars.get(i) = cars.get(i + 1);
                cars.get(i + 1) = temp;
                sortedCars = cars;

            }
        }
    }
    return sortedCars;
}
公共ArrayList排序许可(ArrayList汽车){
ArrayList sortedCars=新的ArrayList();
汽车温度;
对于(int j=0;jcar1.getPrice()){
温度=汽车;
cars.get(i)=cars.get(i+1);
获取(i+1)=温度;
分拣车=汽车;
}
}
}
返回分拣车;
}

嘿,你试过使用比较器接口吗? 如果您必须始终按价格排序,请尝试使用可比较的界面。 有关详细信息,请参阅以下链接:

如果你需要更多细节,请告诉我


有许多排序算法可用。Java本身已经提供了一个很好的方法,您可以将它与
集合#sort
()一起使用。该方法接受任何类型的
列表
数组列表
就是其中之一

因此,您需要定义您想要排序的顺序,您想要按价格排序


您可以通过如下方式实现
可比性
,在您的汽车上定义自然顺序

public class Car implements Comparable<Car> {
    @Override
    public int compareTo(Car other) {
        return Integer.compare(this.getPrice(), other.getPrice());
    }

    // The other stuff of the car class
}
您还可以将其用于集合排序(cars,new CarPriceComparator())


如果您喜欢Java 8附带的Lambda表达式,您还可以使用较少的代码定义等效的
比较器
,如下所示:

Collections.sort(cars, Comparator.comparing(Car::getPrice))

如果要根据对象的多个属性进行排序,可以使用java.util.Comparator接口。-您必须使用Collections.sort(List l,Comparator c),例如:class yourComparatorimplements Comparator{public int compare(OBJ obj1,OBJ obj2){return obj1.getAttribute().compareTo(obj2.getAttribute());}}}哇,java 8让它变得简单了
Collections.sort(cars, Comparator.comparing(Car::getPrice))