Ce face Comparator.naturalOrder
Ordinea „naturală” este cea definită de clasa însăși prin compareTo: numerele crescător, textele alfabetic (după codurile Unicode), datele cronologic. Comparator.naturalOrder() returnează un comparator care folosește această ordine; Comparator.reverseOrder() o inversează.
Sunt utile acolo unde o metodă cere un comparator, dar tu vrei ordinea obișnuită sau inversă: lista.sort(Comparator.reverseOrder()), new TreeMap<>(Comparator.reverseOrder()), sau ca al doilea argument al lui comparing.
Ce returnează
Un comparator pentru ordinea naturală sau inversă.
Exemple
Exemplul 1: Crescător și descrescător
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> punctaje = new ArrayList<>(List.of(72, 95, 87, 60));
punctaje.sort(Comparator.naturalOrder());
System.out.println("Crescător: " + punctaje);
punctaje.sort(Comparator.reverseOrder());
System.out.println("Descrescător: " + punctaje);
}
}
Rezultat
Crescător: [60, 72, 87, 95]
Descrescător: [95, 87, 72, 60]
Exemplul 2: Cele mai recente date întâi
import java.time.LocalDate;
import java.util.Comparator;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<LocalDate, String> stiri = new TreeMap<>(Comparator.reverseOrder());
stiri.put(LocalDate.of(2026, 10, 1), "Începe sezonul de teatru la Iași");
stiri.put(LocalDate.of(2026, 10, 18), "Festivalul de film la Cluj");
stiri.put(LocalDate.of(2026, 9, 20), "Maraton la București");
stiri.forEach((zi, titlu) -> System.out.println(zi + " " + titlu));
}
}
Rezultat
2026-10-18 Festivalul de film la Cluj
2026-10-01 Începe sezonul de teatru la Iași
2026-09-20 Maraton la București
Greșeli frecvente
- Folosești
naturalOrderpe obiecte care nu suntComparable. Nu se compilează; scrie un comparator cucomparing. - Te aștepți ca
reverseOrdersă inverseze ordinea în care au fost adăugate elementele. Inversează ordinea naturală (descrescător); pentru ordinea inversă a listei foloseștereversed()pe listă sauCollections.reverse.
Comenzi înrudite
Comparator: Interfața care spune cum se ordonează două obiecte: compare(a, b) returnează un număr negativ, zero sau pozitiv.Comparator.thenComparing: thenComparing adaugă un criteriu secundar pentru elementele egale după primul; reversed() inversează un comparator.Collections.sort: Sortează o listă pe loc: crescător după ordinea naturală sau după un Comparator dat. Echivalent cu lista.sort(…).TreeMap: Dicționar care ține cheile mereu sortate și oferă căutări de tip „prima cheie”, „cea mai apropiată cheie”, „intervalul de chei”.