Объявление пустых коллекций в Котлине

Как я могу объявить пустую коллекцию для mapOf , listOf и setOf в Kotlin ?

Я объявил ниже переменные:

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

Я хочу проверить, эти коллекции пусты или нет.

Я хочу проверить, эти коллекции пусты или нет.

Почему вы не можете просто использовать метод isEmpty() ?

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

В любом случае, если вы действительно хотите объявить пустую коллекцию, вы можете сделать это следующим образом:

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

или

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

Давайте посмотрим под капот. Метод listOf() вызываемый без аргументов, имеет следующую реализацию:

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

Легко видеть, что он просто вызывает другой метод – emptyList() :

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

который возвращает внутренний объект с именем EmptyList :

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

Итак, резюме состоит в том, что (как сказал @ brescia123 ) эти методы делают то же самое: оба из них возвращают пустой неизменный List и вам решать, какой из них использовать.

Вы можете создавать пустые коллекции следующим образом:

 val occupations = mapOf<String, String>() val shoppingList = listOf<String>() val favoriteGenres = setOf<String>()