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>() 
  • Diferencia entre una class y un object en Kotlin
  • usando Kotlin con Gradle
  • Es Kotlin más difícil de aplicar ingeniería inversa que Java
  • IntelliJ: error de Kotlin causa parpadeo del mouse y errores en el código
  • Encapsulando get el nombre del método en un método de ayuda
  • Compatibilidad de Kotlin con @ColorInt Java Annotation
  • Cómo agregar contenidos de una colección a una nueva colección
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • Android: duplicación de fragments en FragmentManager
  • Pasar parameters a un getter personalizado en kotlin
  • Quiero agregar mi versión de kotlin al proyecto Gradel