我正在实现一种算法,在此算法中,我们必须临时排序现有对象(在执行算法期间,我们将根据此顺序比较它们)。我正在考虑做到这一点的最佳方法,同时要与OOP范例保持一致。
因此,让我们考虑以下示例。我们有Car类的对象,现在我们想在此类对象上使用该算法。因此,我想到了制作一个OrderedCar子类,该子类在其字段中将具有唯一的int。此类将具有一个函数- ArrayList<OrderedCar> defineOrder(ArrayList<Car> order)
,该函数将输出OrderedCar列表,其中的数字与订单表中给定汽车的索引相对应。然后,我们将能够使用已初始化的数字来比较OrderedCars。然后,我们可以在OrderedCars上执行算法,并在算法终止后将其转换为Cars。
在算法期间,我需要Car类中的所有方法,这就是为什么我想到将OrderedCar成为子类。这是个好主意吗?另外,如何在Java中创建一个构造函数,该构造函数将“复制”汽车并为其分配一个数字(我在想类似的东西public OrderedCar(Car c, int order)
,但是为了“复制”汽车c怎么办?不想单独复制所有字段,Java中是否有某种快捷方式?)
您可能更喜欢使用组合而不是继承,而只需创建一个包含Car及其顺序的类:
public class OrderedCar{
private int order;
private Car car;
public OrderedCar(int order, Car car){
this.order = order;
this.car = car;
}
public int getOrder(){
return order;
}
public Car getCar(){
return car;
}
}
然后,您可以按其顺序对此类进行排序,每当需要在其汽车上进行操作时,只需调用getCar()函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句