Tak, możesz dokonać sortowania bez tworzenia nowego c omparator.
Istnieje do sortowania według pola podstawowego, drugorzędnego, trzeciorzędowego, itd .: Najpierw sortuj według najmniej ważnego pola (trzeciorzędne), następnie następne ważne pole (drugorzędne), a na końcu najważniejsze pole (pierwotne) . Ale algorytm sortowania musi być stabilny, aby to działało.
Jeśli sortujesz tablicę, użyj Arrays.sort()
. Jeśli sortujesz plik List
, użyj Collections.sort()
. Obie te metody gwarantują stabilność.
Załóżmy, że podstawowy obiekt porównawczy jest przechowywany w zmiennej primaryComp
, a drugorzędny jest w secondaryComp
. Oto kod, który pozwala osiągnąć to, czego potrzebujesz:
Arrays.sort(mylist, secondaryComp); // This must come first!
Arrays.sort(mylist, primaryComp);
Nice. Nie wiedziałem o tej sztuczce! – Jack