Declarando collections vacías en Kotlin

¿Cómo puedo declarar una colección vacía para mapOf , listOf y setOf en Kotlin ?

He declarado las siguientes variables:

 val occupations = mapOf(Pair("Malcolm", "Captain"), Pair("Kaylee", "Mechanic")) val shoppingList = listOf("catfish", "water", "tulips", "blue paint") val favoriteGenres = setOf("Rock", "Classical", "Hip hop") 

Quiero verificar si esta colección está vacía o no.

Quiero verificar si estas collections están vacías o no.

¿Por qué no puedes simplemente usar el método isEmpty() ?

 print(occupations.isEmpty()) // >>> false print(shoppingList.isEmpty()) // >>> false print(favoriteGenres.isEmpty()) // >>> false 

De todos modos, si realmente quieres declarar una colección vacía, puedes hacerlo así:

 val emptyList = listOf<String>() val emptySet = setOf<String>() val emptyMap = mapOf<String, String>() 

o

 val emptyList = emptyList<String>() val emptySet = emptySet<String>() val emptyMap = emptyMap<String, String>() 

Echemos un vistazo debajo del capó. El método listOf() llamado sin arguments tiene la siguiente implementación:

 /** Returns an empty read-only list. The returned list is serializable (JVM). */ @kotlin.internal.InlineOnly public inline fun <T> listOf(): List<T> = emptyList() 

Es fácil ver que simplemente llama a otro método – emptyList() :

 /** Returns an empty read-only list. The returned list is serializable (JVM). */ public fun <T> emptyList(): List<T> = EmptyList 

que devuelve un object interno llamado EmptyList :

 internal object EmptyList : List<Nothing>, Serializable, RandomAccess { // <...> } 

Entonces, el resumen es que (como dijo @ brescia123 ) estos methods hacen exactamente lo mismo: ambos devuelven una List inmobile vacía y usted decide cuál usar.

Puede crear collections vacías como esta:

 val occupations = mapOf<String, String>() val shoppingList = listOf<String>() val favoriteGenres = setOf<String>() 
  • Kotlin filter lambda array usando el índice de iteración
  • ¿Kotlin admite que una class implemente una interfaz fuera de su file de definición?
  • Reglas de ProGuard para la reflexión de Kotlin
  • Kotlin Generics tipo personalizado con comodín
  • Comportamiento de RxJava Schedulers.immediate () mientras testings unitarias
  • Tornadofx - controlando el object de la fila de la vista de tabla mientras construye
  • Clase abstracta de generics Kotlin
  • Anotación de Android con Kotlin
  • Kotlin: pasar al operador como un parámetro de function
  • Personalizando Kotlin cuando expresión
  • Hay alguna biblioteca para trabajar con mónadas en kotlin?