如何在 Kotlin 中为mapOf
,listOf
和setOf
声明一个空集合?
我在下面声明了变量:
val occupations = mapOf(Pair("Malcolm", "Captain"), Pair("Kaylee", "Mechanic"))
val shoppingList = listOf("catfish", "water", "tulips", "blue paint")
val favoriteGenres = setOf("Rock", "Classical", "Hip hop")
我想检查这些收集是否为空。
答案 0 :(得分:15)
我想检查这些集合是否为空。
为什么不能简单地使用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
,由你来决定哪一个使用。
答案 1 :(得分:4)
您可以像这样创建空集合:
val occupations = mapOf<String, String>()
val shoppingList = listOf<String>()
val favoriteGenres = setOf<String>()