Ce face Iterable.reversed
reversed() nu sortează nimic: doar inversează ordinea existentă. Rezultatul este o listă nouă, iar colecția originală rămâne la fel.
asReversed() (pe liste) nu copiază elementele: întoarce o „vedere” inversată a aceleiași liste, utilă pentru liste mari. Pe o MutableList, reverse() (fără d) inversează pe loc.
Ce returnează
O List<T> cu elementele în ordine inversă.
Exemple
Exemplul 1: Ultimele mesaje primele
Mesajele sunt salvate în ordinea sosirii; pentru afișare le inversăm, ca cel mai nou să fie sus.
fun main() {
val mesaje = listOf("Bună!", "Ce faci?", "Ne vedem la 5", "Am ajuns")
for (m in mesaje.reversed()) println(m)
}
Rezultat
Am ajuns
Ne vedem la 5
Ce faci?
Bună!
Exemplul 2: Numărătoare inversă și palindrom
Inversăm o listă de numere; apoi comparăm lista de litere a unui cuvânt cu inversul ei. (Pe un interval, (1..5).reversed() dă progresia 5 downTo 1, nu o listă.)
fun main() {
println(listOf(1, 2, 3, 4, 5).reversed())
val cuvant = "capac"
val litere = cuvant.toList()
println("$cuvant este palindrom: ${litere == litere.reversed()}")
}
Rezultat
[5, 4, 3, 2, 1]
capac este palindrom: true
Exemplul 3: reversed, reverse și asReversed
reversed lasă lista neschimbată. asReversed urmărește lista: după add, elementul nou apare primul în vedere. reverse schimbă chiar lista.
fun main() {
val coada = mutableListOf("Ana", "Ion", "Maria")
val copie = coada.reversed()
val vedere = coada.asReversed()
coada.add("Radu")
println("copie: $copie")
println("vedere: $vedere")
coada.reverse()
println("după reverse: $coada")
}
Rezultat
copie: [Maria, Ion, Ana]
vedere: [Radu, Maria, Ion, Ana]
după reverse: [Radu, Maria, Ion, Ana]
Greșeli frecvente
- Aștepți ca
reversed()să sorteze descrescător: doar inversează ordinea. Pentru ordine descrescătoare foloseștesortedDescending(). - Confunzi
reversed()(listă nouă) cureverse()(schimbă lista pe loc, doar peMutableList).
Comenzi înrudite
Iterable.sorted: Întoarce o listă nouă cu elementele în ordine crescătoare (sorted) sau descrescătoare (sortedDescending).Iterable.shuffled: shuffled amestecă elementele într-o listă nouă, iar random alege un element la întâmplare.List.takeLast: takeLast(n) întoarce ultimele n elemente ale listei, iar dropLast(n) lista fără ultimele n.List.indices: indices este intervalul pozițiilor valide ale listei (0..size-1); lastIndex este poziția ultimului element.