listOfNotNull în Kotlin

Creează o listă doar cu valorile care nu sunt null; elementele null sunt sărite.

Sintaxă
fun <T : Any> listOfNotNull(vararg elemente: T?): List<T>
fun <T : Any> listOfNotNull(element: T?): List<T>

Ce face listOfNotNull

listOfNotNull(a, b, c) seamănă cu listOf, dar lasă deoparte orice valoare null. Tipul rezultatului nu mai are semnul întrebării: din String? obții List<String>.

Este util când construiești o listă din câmpuri opționale: un număr de telefon secundar, o adresă de livrare care poate lipsi. Cu un singur argument, întoarce o listă cu un element sau o listă goală.

Parametri

Parametru Descriere
elemente Valori care pot fi null.

Ce returnează

List<T> doar cu valorile diferite de null, în ordinea dată.

Exemple

Exemplul 1: Telefoane opționale

Al doilea telefon lipsește (null), așa că lista are doar două elemente.

fun main() {
    val mobil: String? = "0722 111 222"
    val serviciu: String? = null
    val acasa: String? = "0232 123 456"

    val telefoane = listOfNotNull(mobil, serviciu, acasa)
    println(telefoane)
    println("Avem ${telefoane.size} numere")
}

Rezultat

[0722 111 222, 0232 123 456]
Avem 2 numere

Exemplul 2: Un singur element opțional

Cu un singur argument, rezultatul are un element sau niciunul. Așa se poate adăuga ușor o valoare opțională la o listă.

fun etichete(oras: String, judet: String?): List<String> =
    listOf(oras) + listOfNotNull(judet)

fun main() {
    println(etichete("Iași", "IS"))
    println(etichete("București", null))
}

Rezultat

[Iași, IS]
[București]

Greșeli frecvente

  • Folosești listOf(a, b) cu valori nule și obții List<String?> cu null în ea. Dacă nu vrei valorile lipsă, alege listOfNotNull sau filterNotNull().

Comenzi înrudite

  • Iterable.filterNotNull: Întoarce o listă nouă fără elementele null; tipul rezultatului nu mai permite null.
  • listOf: Creează o listă din elementele date: listOf pentru citire, mutableListOf și arrayListOf pentru o listă pe care o modifici.
  • Iterable.mapNotNull: Aplică o funcție fiecărui element și păstrează doar rezultatele care nu sunt null; firstNotNullOf întoarce primul astfel de rezultat.