Iterable.average în Kotlin

Calculează media aritmetică a numerelor din colecție; întoarce mereu un Double.

Sintaxă
fun Iterable<Int>.average(): Double
fun Iterable<Double>.average(): Double

Ce face Iterable.average

average() adună elementele și împarte la numărul lor. Rezultatul este întotdeauna Double, chiar dacă elementele sunt Int, deci nu pierzi zecimalele ca la împărțirea întreagă.

Pentru o colecție goală rezultatul este NaN (Not a Number), nu o eroare. Verifică isEmpty() înainte sau testează rezultatul cu isNaN().

Pentru media unui câmp dintr-o listă de obiecte, extrage întâi valorile: elevi.map { it.nota }.average().

Ce returnează

Media ca Double; NaN dacă nu există elemente.

Exemple

Exemplul 1: Media notelor

Notele sunt Int, dar media are zecimale. Rotunjim la două zecimale cu Math.round.

fun main() {
    val note = listOf(9, 10, 7, 8)
    val media = note.average()
    println("Media: $media")

    val alte = listOf(10, 9, 9)
    val m = alte.average()
    println("Media exactă: $m")
    println("Rotunjită: ${Math.round(m * 100) / 100.0}")
}

Rezultat

Media: 8.5
Media exactă: 9.333333333333334
Rotunjită: 9.33

Exemplul 2: Media unui câmp și lista goală

Extragem temperaturile cu map, apoi facem media. O listă fără elemente dă NaN, pe care îl tratăm separat.

data class Zi(val nume: String, val grade: Double)

fun main() {
    val saptamana = listOf(Zi("luni", 18.5), Zi("marți", 21.0), Zi("miercuri", 19.5))
    println("Temperatura medie: ${saptamana.map { it.grade }.average()} °C")

    val fara = emptyList<Double>()
    val m = fara.average()
    println(if (m.isNaN()) "Nu avem măsurători" else "Media: $m")
}

Rezultat

Temperatura medie: 19.666666666666668 °C
Nu avem măsurători

Greșeli frecvente

  • Calculezi media cu note.sum() / note.size: ambele sunt Int, așa că zecimalele se pierd (26 / 3 = 8). average() întoarce corect 8.666....
  • Afișezi media unei liste goale și apare NaN. Verifică lista înainte.

Comenzi înrudite

  • Iterable.sum: Adună toate numerele dintr-o listă, mulțime sau tablou și întoarce totalul.
  • Iterable.sumOf: Adună valoarea calculată de o funcție pentru fiecare element, de exemplu prețul fiecărui produs din coș.
  • Iterable.max: Găsește cel mai mare (max) sau cel mai mic (min) element; variantele OrNull întorc null pentru o colecție goală.
  • Iterable.count: Numără elementele colecției sau doar pe cele care îndeplinesc o condiție.