假设我有一个称为Unit的类(具有位置变量x),并将该类扩展到UnitA,UnitB,UnitC等。

这是我想到的:

Unit[] ordered = new Unit[a_num+b_num+c_num];
ordered = Arrays.copyOf(a_units, a_num); //and add b_units, c_units, etc
Arrays.sort(ordered); //sort using compareTo method



为了获得最佳性能和简洁的编程,从左到右(x变量)对这些值进行排序的最佳方法是什么?
对数组进行排序时,为了访问特定于单元的变量,我如何找出每个条目是什么类型的对象?

最佳答案

Arrays.sort(ordered)将根据单位的自然顺序(由compareTo方法定义)进行排序。如果自然排序不是您想要的,请使用Arrays.sort(array, Comparator)并通过一个比较器,该比较器比较单元的位置。

关于第二个问题:您不必知道单元的类型。您的Unit类应该提供可以调用的多态方法,每个子类都将其实现以执行适当的操作。总是有instanceof运算符和getClass()方法,但是使用它们表明缺乏OO设计,因此是不好的做法。

10-04 23:36
查看更多