Kotlin中的mapOf()与emptyMap()

Kotlin中的mapOf()与emptyMap(),kotlin,Kotlin,刚开始在我们的项目中使用Kotlin。要初始化不可变映射或列表(可能是Kotlin中的任何集合),我可以看到两个选项mapOf()和emptyMap()(listOf()和emptyList()) 基本上,mapOf只是一个内联函数,返回emptyMap() @kotlin.internal.InlineOnly public inline fun mapOf():Map=emptyMap() 与另一个相比,什么是首选项?Kotlin为什么同时公开这两个项?这是一个mapOf(vararg对)

刚开始在我们的项目中使用Kotlin。要初始化不可变映射或列表(可能是Kotlin中的任何集合),我可以看到两个选项
mapOf()
emptyMap()
listOf()
emptyList()

基本上,
mapOf
只是一个内联函数,返回
emptyMap()

@kotlin.internal.InlineOnly
public inline fun mapOf():Map=emptyMap()
与另一个相比,什么是首选项?Kotlin为什么同时公开这两个项?

这是一个
mapOf(vararg对)
-如果在没有任何参数的情况下调用该函数,则无需执行大小检查

至于“什么比另一个更受欢迎”-任何使代码更具可读性的东西。就性能而言,没有区别(因为
mapOf()
是内联的),不过为了一致性,您可能希望选择一个并坚持使用它。

这是一个of
mapOf(vararg对)
-如果您在没有任何参数的情况下调用该函数,则无需执行大小检查


至于“什么比另一个更受欢迎”-任何使代码更具可读性的东西。就性能而言,没有区别(因为
mapOf()
是内联的),不过为了一致性,您可能希望选择一个并坚持使用它。

我猜空映射是静态引用空映射进行初始化,以防止不必要的分配;而mapOf是一种工厂方法,用于初始化带有一些初始值的map。您可能在intellij中按住ctrl键并单击emptyMap(),然后查看源代码。
emptyMap()
mapOf()更详细。
我猜空映射是静态引用空映射进行初始化,以防止不必要的分配;而mapOf是一种工厂方法,用于初始化带有一些初始值的map。您可能在intellij中按住ctrl键并单击emptyMap(),然后查看源代码。
emptyMap()
mapOf()更详细。
@kotlin.internal.InlineOnly
public inline fun <K, V> mapOf(): Map<K, V> = emptyMap()