2017-06-21 68 views
4

如何声明mapOf,listOfsetOf的空集合Kotlin在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") 

我想检查是这些集合是空的或没有。

+0

所有这些藏品有一个'的isEmpty()'方法,如果这就是你要找的内容。 – zsmb13

+0

如何申报一个空集合,我正在寻找 –

回答

12

我想检查这些收藏品是否为空。

为什么你不能简单地使用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>() 

OR

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

让我们看看下t他罩。方法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,这取决于你决定使用哪一个。

+0

欢迎您使用'他们以及:) –

+0

感谢您的最后编辑我正在寻找什么是主要区别 –

+2

“在第一种情况下,你得到可变集合“ - 你确定这不是相反的方式吗? – voddan

3

您可以创建空的集合是这样的:

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

哦,对。固定。 – zsmb13

+0

感谢您的编辑 –