Ce face List.slice
slice(2..4) ia elementele de pe pozițiile 2, 3 și 4. Intervalul include ambele capete. Poți da și o listă de indici oarecare, de exemplu listOf(0, 2, 5), iar elementele vin în ordinea indicilor dați.
Rezultatul este o copie: modificările ulterioare ale listei originale nu se văd în el. Dacă un indice nu există, apare IndexOutOfBoundsException.
Pentru o „fereastră” care nu copiază elementele există subList, unde capătul de final este exclus.
Parametri
| Parametru | Descriere |
|---|---|
indici |
Un IntRange (ambele capete incluse) sau orice colecție de poziții. |
Ce returnează
O List<T> nouă cu elementele cerute.
Exemple
Exemplul 1: Zilele lucrătoare din mijlocul săptămânii
Pozițiile 1..3 înseamnă marți, miercuri și joi: ambele capete sunt incluse.
fun main() {
val zile = listOf("luni", "marți", "miercuri", "joi", "vineri", "sâmbătă", "duminică")
println(zile.slice(1..3))
println(zile.slice(5..6))
}
Rezultat
[marți, miercuri, joi]
[sâmbătă, duminică]
Exemplul 2: Indici aleși și în altă ordine
Elementele vin în ordinea indicilor: întâi poziția 4, apoi 0, apoi 2. Ultima linie ia pozițiile pare cu un interval cu pas.
fun main() {
val litere = listOf("a", "b", "c", "d", "e", "f")
println(litere.slice(listOf(4, 0, 2)))
println(litere.slice(0..litere.lastIndex step 2))
}
Rezultat
[e, a, c]
[a, c, e]
Greșeli frecvente
- Crezi că
slice(1..3)ia elementele 1 și 2: ia trei elemente, pentru că..include capătul. Pentru capăt exclus folosește1 until 3sau1..<3.
Comenzi înrudite
List.subList: Întoarce o vedere asupra unei porțiuni din listă, de la poziția deLa inclusiv până la panaLa exclusiv.Iterable.take: take(n) întoarce primele n elemente, iar drop(n) întoarce tot ce rămâne după ce sari peste primele n.List.indices: indices este intervalul pozițiilor valide ale listei (0..size-1); lastIndex este poziția ultimului element.Array.copyOf: Creează o copie a tabloului; cu o dimensiune nouă, taie elementele în plus sau completează cu null/0.