Ce face Iterable.take
take(n) creează o listă nouă cu primele n elemente. Dacă colecția are mai puține elemente, le întoarce pe toate, fără eroare.
drop(n) face complementul: sare peste primele n elemente și întoarce restul. Dacă n depășește numărul de elemente, rezultatul este o listă goală. Împreună, take(n) + drop(n) dă colecția întreagă.
Pe secvențe (Sequence) take este leneș: oprește calculul după n elemente, deci merge și pe secvențe infinite.
Parametri
| Parametru | Descriere |
|---|---|
n |
Câte elemente se iau (take) sau se sar (drop). Nu poate fi negativ. |
Ce returnează
O List<T> nouă.
Exemple
Exemplul 1: Primii trei și restul clasamentului
Lista este deja în ordinea clasamentului. take(3) dă podiumul, drop(3) pe ceilalți.
fun main() {
val clasament = listOf("Maria", "Ana", "Ion", "Radu", "Elena", "Dan")
println("Podium: ${clasament.take(3)}")
println("Ceilalți: ${clasament.drop(3)}")
}
Rezultat
Podium: [Maria, Ana, Ion]
Ceilalți: [Radu, Elena, Dan]
Exemplul 2: n mai mare decât lista
Nu apare nicio eroare: take întoarce tot ce există, iar drop o listă goală.
fun main() {
val note = listOf(9, 8)
println(note.take(5))
println(note.drop(5))
}
Rezultat
[9, 8]
[]
Exemplul 3: Sărirea antetului dintr-un fișier CSV
Prima linie conține numele coloanelor, așa că o sărim cu drop(1) înainte de a citi datele.
fun main() {
val linii = listOf("nume,oras,varsta", "Ana,Iași,21", "Ion,Cluj,23")
for (linie in linii.drop(1)) {
val (nume, oras, varsta) = linie.split(",")
println("$nume din $oras are $varsta de ani")
}
}
Rezultat
Ana din Iași are 21 de ani
Ion din Cluj are 23 de ani
Greșeli frecvente
- Dai un
nnegativ:IllegalArgumentException. Valoarea trebuie să fie 0 sau mai mare. - Vrei ultimele elemente și scrii
take: pentru final foloseștetakeLast.
Comenzi înrudite
Iterable.takeWhile: takeWhile ia elementele de la început cât timp condiția e adevărată; dropWhile le sare și întoarce restul.List.takeLast: takeLast(n) întoarce ultimele n elemente ale listei, iar dropLast(n) lista fără ultimele n.List.slice: Întoarce o listă nouă cu elementele de la pozițiile date: un interval (2..4) sau o listă de indici.Iterable.chunked: Împarte colecția în bucăți consecutive de câte n elemente; ultima bucată poate fi mai mică.Iterable.sorted: Întoarce o listă nouă cu elementele în ordine crescătoare (sorted) sau descrescătoare (sortedDescending).