【发布时间】:2015-05-18 02:08:05
【问题描述】:
有一个车辆对象的 ArrayList,使用了很多次。每个对象都有一个 id 和它被使用的次数。
ArrayList<Object> usedVehicles = new ArrayList();
还有一个数组,保存所有车辆的id。
int[] vehicleIDs = database.getVehicleIds();
我需要根据使用次数对vehicleIDs数组中的元素进行排序,显然从未使用过的车辆必须排在第一位。
我想我可以用比较器对 ArrayList 中的车辆对象进行排序:
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(Vehicle vehicle1, Vehicle vehicle1) {
return vehicle1.getTheNumberOfTimesUsed().compareTo(vehicle2.getTheNumberOfTimesUsed()());
}
}
但是,我不知道如何根据 ArrayList 中的顺序更改 vehicleIDs 数组中项目的位置。此外,从未使用过的车辆必须先来。
【问题讨论】:
-
不可能只从排序的 ArrayList 创建一个新数组吗?
-
不,不是。正如我所说,只有使用了一定次数的车辆才在 ArrayList 中。并且从未使用过的车辆在更新后必须按照vehicleIDs数组中的项目顺序排在第一位。我们不允许将这些未使用的车辆添加到 ArrayList。所以,我仍然需要根据排序后的 Arraylist 更新 vehicleIDs 数组。
标签: java arrays object arraylist comparator