Сортировка массива объектов по разным полям

Есть массив объектов Car[] cars, который надо сортировать по разным полям. Например: Id, Weight, MaxSpeed.

Я сделал 3 метода. В них по сути повторяется одно и то же. Подскажите, пожалуйста, как сделать вместо нескольких методов, такой один метод, в который можно было бы передать параметр, по которому надо отсортировать?

public static void sortCarsById(Car[] cars) {
    System.out.println("\nCars were sorted by id: ");
    Car temp;
    for (int i = 0; i < cars.length; i++) {
        for (int j = 0; j < cars.length - 1 - i; j++) {
            if (cars[j].getId() > cars[j + 1].getId()) {
                temp = cars[j];
                cars[j] = cars[j + 1];
                cars[j + 1] = temp;
            }
        }
    }
}


public static void sortCarsByWeight(Car[] cars) {
    System.out.println("\nCars were sorted by weight: ");
    Car temp;
    for (int i = 0; i < cars.length; i++) {
        for (int j = 0; j < cars.length - 1 - i; j++) {
            if (cars[j].getWeight() > cars[j + 1].getWeight()) {
                temp = cars[j];
                cars[j] = cars[j + 1];
                cars[j + 1] = temp;
            }
        }
    }
}


public static void sortCarsByMaxSpeed(Car[] cars) {
    System.out.println("\nCars were sorted by max speed: ");
    Car temp;
    for (int i = 0; i < cars.length; i++) {
        for (int j = 0; j < cars.length - 1 - i; j++) {
            if (cars[j].getMaxSpeed() > cars[j + 1].getMaxSpeed()) {
                temp = cars[j];
                cars[j] = cars[j + 1];
                cars[j + 1] = temp;
            }
        }
    }
}

Ответы (1 шт):

Автор решения: NarasuOo
Arrays.sort(cars, Comparator.comparing(Car::getId)); // Сортировка по id

Arrays.sort(cars, Comparator.comparing(Car::getWeight)); // Сортировка по weight

Arrays.sort(cars, Comparator.comparing(Car::getMaxSpeed)); // Сортировка по maxSpeed
→ Ссылка