Ce face Array.sort
sort() pe un tablou îl ordonează crescător pe loc: tabloul original se schimbă și funcția nu întoarce nimic. Numerele se sortează după valoare, textele alfabetic (după codurile caracterelor).
Variantele înrudite: sortDescending() sortează descrescător, sortBy { ... } după o proprietate (pentru Array<T>), iar sort(deLa, panaLa) sortează doar o parte, cu panaLa exclus.
Dacă vrei să păstrezi tabloul original, folosește sorted() (întoarce o listă nouă) sau sortedArray() (întoarce un tablou nou).
Parametri
| Parametru | Descriere |
|---|---|
deLa, panaLa |
Opțional: sortează doar pozițiile deLa … panaLa - 1. |
Ce returnează
Nimic (Unit). Tabloul este modificat.
Exemple
Exemplul 1: Sortarea notelor
După sort(), același tablou are elementele în ordine crescătoare. sortDescending() le întoarce.
fun main() {
val note = intArrayOf(7, 10, 5, 9, 8)
note.sort()
println(note.contentToString())
note.sortDescending()
println(note.contentToString())
}
Rezultat
[5, 7, 8, 9, 10]
[10, 9, 8, 7, 5]
Exemplul 2: Original păstrat cu sortedArray
sortedArray() creează un tablou nou; orase rămâne neschimbat. Pe a doua linie sortăm doar primele trei poziții.
fun main() {
val orase = arrayOf("Suceava", "Arad", "Iași", "Brăila", "Cluj")
val sortate = orase.sortedArray()
println("original: ${orase.contentToString()}")
println("sortat: ${sortate.contentToString()}")
orase.sort(0, 3)
println("primele 3 sortate: ${orase.contentToString()}")
}
Rezultat
original: [Suceava, Arad, Iași, Brăila, Cluj]
sortat: [Arad, Brăila, Cluj, Iași, Suceava]
primele 3 sortate: [Arad, Iași, Suceava, Brăila, Cluj]
Exemplul 3: sortBy pentru obiecte
Pentru un tablou de obiecte alegem după ce proprietate sortăm.
data class Produs(val nume: String, val pret: Double)
fun main() {
val produse = arrayOf(Produs("cafea", 24.9), Produs("ceai", 9.5), Produs("zahăr", 5.2))
produse.sortBy { it.pret }
for (p in produse) println("${p.nume}: ${p.pret} lei")
}
Rezultat
zahăr: 5.2 lei
ceai: 9.5 lei
cafea: 24.9 lei
Greșeli frecvente
- Scrii
val s = tablou.sort()și te aștepți la un tablou:sort()întoarceUnit. Foloseștesorted()sausortedArray()pentru o copie sortată. - Sortezi texte cu diacritice și te miri că „Ș” vine după „Z”: sortarea implicită folosește codurile Unicode. Pentru ordinea din dicționar folosește un
java.text.Collatorpentru limba română.
Comenzi înrudite
Iterable.sorted: Întoarce o listă nouă cu elementele în ordine crescătoare (sorted) sau descrescătoare (sortedDescending).MutableList.sort: Sortează chiar lista modificabilă (pe loc), crescător, descrescător sau după un câmp; nu întoarce nimic.Array.contentToString: contentToString afișează elementele tabloului ca text; contentEquals compară două tablouri element cu element.Iterable.sortedBy: Sortează elementele după valoarea calculată de o funcție, de exemplu elevii după medie sau orașele după populație.