Iterable.any în Kotlin

any: măcar un element îndeplinește condiția; all: toate o îndeplinesc; none: niciunul nu o îndeplinește.

Sintaxă
fun <T> Iterable<T>.any(conditie: (T) -> Boolean): Boolean
fun <T> Iterable<T>.all(conditie: (T) -> Boolean): Boolean
fun <T> Iterable<T>.none(conditie: (T) -> Boolean): Boolean

Ce face Iterable.any

Cele trei funcții răspund cu true sau false la o întrebare despre toată colecția. any { ... } este true dacă cel puțin un element se potrivește, all { ... } dacă toate se potrivesc, none { ... } dacă niciunul nu se potrivește.

Se opresc cât mai devreme: any la primul element potrivit, all la primul nepotrivit. Fără condiție, any() înseamnă „colecția are elemente” și none() înseamnă „colecția este goală”.

Pe o colecție goală: any dă false, none dă true, iar all dă true (nu există niciun element care să nu îndeplinească condiția).

Parametri

Parametru Descriere
conditie Funcția verificată pentru elemente (opțională la any și none).

Ce returnează

Boolean.

Exemple

Exemplul 1: Verificări pe note

Trei întrebări despre aceleași note.

fun main() {
    val note = listOf(8, 10, 5, 9)
    println("Are vreun 10? ${note.any { it == 10 }}")
    println("Toate de trecere? ${note.all { it >= 5 }}")
    println("Niciun 4? ${note.none { it < 5 }}")
    println("Are note? ${note.any()}")
}

Rezultat

Are vreun 10? true
Toate de trecere? true
Niciun 4? true
Are note? true

Exemplul 2: Validarea unei parole

Parola trebuie să aibă cel puțin o cifră, cel puțin o literă mare și niciun spațiu.

fun eValida(parola: String): Boolean {
    val c = parola.toList()
    return parola.length >= 8 && c.any { it.isDigit() } && c.any { it.isUpperCase() } && c.none { it == ' ' }
}

fun main() {
    for (p in listOf("parola", "Parola2026", "Parola 2026", "PAROLA")) {
        println("$p -> ${eValida(p)}")
    }
}

Rezultat

parola -> false
Parola2026 -> true
Parola 2026 -> false
PAROLA -> false

Exemplul 3: Colecția goală

Rezultatul lui all pe o listă goală poate surprinde: este true.

fun main() {
    val goala = emptyList<Int>()
    println("any:  ${goala.any { it > 0 }}")
    println("all:  ${goala.all { it > 0 }}")
    println("none: ${goala.none { it > 0 }}")
}

Rezultat

any:  false
all:  true
none: true

Greșeli frecvente

  • Folosești all ca să verifici „toate elementele sunt bune” fără să verifici și că lista nu este goală. Pentru o listă goală, all întoarce true.
  • Scrii filter { ... }.isNotEmpty() sau count { ... } > 0: any { ... } este mai scurt și se oprește la primul element găsit.

Comenzi înrudite

  • Iterable.count: Numără elementele colecției sau doar pe cele care îndeplinesc o condiție.
  • Iterable.find: Întoarce primul element care îndeplinește condiția sau null dacă nu există niciunul.
  • Iterable.contains: contains (operatorul in) verifică dacă un element există; indexOf dă poziția primei apariții sau -1.
  • Collection.isEmpty: isEmpty/isNotEmpty verifică dacă o colecție are elemente; orEmpty transformă null în colecție goală; ifEmpty dă o alternativă.