Ce face Iterable.count
count { ... } întoarce câte elemente îndeplinesc condiția, fără să creeze o listă intermediară. Fără condiție, count() numără toate elementele (pentru liste și mulțimi e mai simplu size; count() este util pe secvențe și pe Iterable în general).
Pentru a număra fiecare valoare distinctă (de câte ori apare fiecare cuvânt, de exemplu) folosește groupingBy { it }.eachCount().
Parametri
| Parametru | Descriere |
|---|---|
conditie |
Opțional: funcția care spune ce elemente se numără. |
Ce returnează
Un Int.
Exemple
Exemplul 1: Câți elevi au trecut
count cu condiție; numărul de corigenți este diferența.
fun main() {
val medii = listOf(9.5, 4.2, 7.8, 6.0, 3.9, 8.7)
val promovati = medii.count { it >= 5 }
println("Promovați: $promovati din ${medii.size}")
println("Corigenți: ${medii.size - promovati}")
println("Peste 9: ${medii.count { it > 9 }}")
}
Rezultat
Promovați: 4 din 6
Corigenți: 2
Peste 9: 1
Exemplul 2: Numărarea pe o secvență
Câte numere de la 1 la 1000 se divid cu 7, dar nu cu 2. Secvența nu are size, deci folosim count.
fun main() {
val n = (1..1000).asSequence().filter { it % 7 == 0 }.count { it % 2 != 0 }
println(n)
}
Rezultat
71
Greșeli frecvente
- Scrii
filter { ... }.size: funcționează, dar creează o listă doar ca să o numeri.count { ... }face același lucru direct.
Comenzi înrudite
Iterable.any: any: măcar un element îndeplinește condiția; all: toate o îndeplinesc; none: niciunul nu o îndeplinește.Iterable.groupingBy: Pregătește o grupare după cheie; eachCount() numără apoi câte elemente are fiecare cheie (frecvența).Iterable.filter: Creează o listă nouă doar cu elementele care îndeplinesc condiția (filterNot: cu cele care nu o îndeplinesc).Iterable.sum: Adună toate numerele dintr-o listă, mulțime sau tablou și întoarce totalul.