使用自定义比较器会简单得多:
排序依据
name:
Arrays.sort(carArray, Comparator.comparing(Car::name));
排序依据
colour:
Arrays.sort(carArray, Comparator.comparing(Car::colour));
所以你可以修改
getSortedArray():
public static Car[] getSortedArray(Car[] carArray, Comparator<Car> comparator) { Car[] sorted = carArray.clone() Arrays.sort(sorted, comparator); return sorted;}并这样称呼它:
Car[] sorted = getSortedArray(carArray, Comparator.comparing(Car::name));
编辑:
如果使用不支持这些功能的语言版本,则可以通过显式创建实现该
Comparator接口的嵌套类来创建比较器。
例如,这是一个单例
Comparator,
Car按
name以下方式比较实例:
static enum ByName implements Comparator<Car> { INSTANCE; @Override public int compare(Car c1, Car c2) { return c1.name().compareTo(c2.name()); }}然后致电:
Car[] sorted = getSortedArray(carArray, ByName.INSTANCE);



