Ce face Iterable.sorted
sorted() creează o listă nouă sortată crescător, folosind ordinea naturală a tipului: numerele de la mic la mare, textele în ordinea codurilor caracterelor. Colecția originală nu se schimbă. sortedDescending() sortează de la mare la mic.
Sortarea este stabilă: elementele egale își păstrează ordinea dintre ele. Pentru a sorta după un câmp al unui obiect folosește sortedBy; pentru o listă modificabilă pe care vrei să o sortezi pe loc, sort().
Atenție la texte: literele mari vin înaintea celor mici, iar literele cu diacritice (ă, ș, ț) vin după z. Pentru ordinea din dicționarul românesc folosește sortedWith cu un Collator.
Ce returnează
O List<T> nouă, sortată.
Exemple
Exemplul 1: Note crescător și descrescător
Lista originală rămâne neschimbată; fiecare apel întoarce o listă nouă.
fun main() {
val note = listOf(8, 10, 6, 9, 7)
println("Crescător: ${note.sorted()}")
println("Descrescător: ${note.sortedDescending()}")
println("Originală: $note")
}
Rezultat
Crescător: [6, 7, 8, 9, 10]
Descrescător: [10, 9, 8, 7, 6]
Originală: [8, 10, 6, 9, 7]
Exemplul 2: Primele trei scoruri
Sortăm descrescător și luăm primele trei elemente cu take.
fun main() {
val scoruri = listOf(1200, 870, 1540, 990, 1310, 760)
val podium = scoruri.sortedDescending().take(3)
println("Podium: $podium")
}
Rezultat
Podium: [1540, 1310, 1200]
Exemplul 3: Texte: majuscule și diacritice
„ana” (cu literă mică) ajunge după toate numele cu majusculă, iar „Ștefan” după „Zoe”, pentru că Ș are un cod mai mare decât Z.
fun main() {
val nume = listOf("Ion", "ana", "Ștefan", "Zoe", "Bogdan")
println(nume.sorted())
}
Rezultat
[Bogdan, Ion, Zoe, ana, Ștefan]
Greșeli frecvente
- Apelezi
lista.sorted()și aștepți calistasă se schimbe:sortedîntoarce o listă nouă. Păstrează rezultatul (val sortata = lista.sorted()) sau foloseștesort()pe oMutableList. - Sortezi nume românești cu
sorted()și „Ștefan” apare după „Zoe”. FoloseștesortedWith(Collator.getInstance(Locale.forLanguageTag("ro"))).
Comenzi înrudite
Iterable.sortedBy: Sortează elementele după valoarea calculată de o funcție, de exemplu elevii după medie sau orașele după populație.Iterable.sortedWith: Sortează după un Comparator: mai multe criterii cu compareBy/thenBy sau ordine românească cu Collator.Iterable.reversed: Întoarce o listă nouă cu elementele în ordine inversă: ultimul devine primul.MutableList.sort: Sortează chiar lista modificabilă (pe loc), crescător, descrescător sau după un câmp; nu întoarce nimic.Iterable.max: Găsește cel mai mare (max) sau cel mai mic (min) element; variantele OrNull întorc null pentru o colecție goală.