Да, вы можете выполнить свой вид, не создавая новый c omparator.
Существует well-known trick для сортировки по первичному полю, вторичному, третичному и т. Д.: Сначала сортируйте по наименее важному полю (третичному), затем следующему важному полю (вторичному) и, наконец, самому важному полю (первичному) , Но алгоритм сортировки должен быть стабильный, чтобы это сработало.
Если вы сортируете массив, используйте Arrays.sort()
. Если вы сортируете List
, используйте Collections.sort()
. Оба этих метода гарантируют стабильность.
Предположим, что ваш основной объект компаратора хранится в переменной primaryComp
, а ваш вторичный - в secondaryComp
. Тогда вот какой код нужно выполнить:
Arrays.sort(mylist, secondaryComp); // This must come first!
Arrays.sort(mylist, primaryComp);
Nice. Я не знал об этом трюке! – Jack