You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中优雅创建仅含非空值的Map且避免可变Map或不安全强转

方案1:使用listOfNotNull (完全匹配你期望的写法风格,无类型强转)

这个方法利用listOfNotNull自动过滤空元素的特性,无需类型转换,全程类型安全:

fun createMap(mandatoryValue: String, optionalValue: String?): Map<String, String> =
    listOfNotNull(
        "key1" to mandatoryValue,
        optionalValue?.let { "key2" to it }
    ).toMap()

原理说明:当optionalValue为null时,第二个配对元素不会生成,直接为null,listOfNotNull会自动剔除这个空元素,最终转出来的Map天然只包含非空值的键值对,不存在类型安全问题。


方案2:使用buildMap(Kotlin 1.3+ 推荐,逻辑更直观)

如果你使用Kotlin 1.3及更高版本,可以用标准库提供的buildMap函数,内部封装了可变Map构建逻辑,对外返回不可变Map,写法和你原有逻辑几乎一致,无需手动转换类型:

fun createMap(mandatoryValue: String, optionalValue: String?): Map<String, String> =
    buildMap {
        put("key1", mandatoryValue)
        optionalValue?.let { put("key2", it) }
    }

这个方案在可选键值对数量较多的时候,可读性会更好,性能也和你原有实现一致。

内容的提问来源于stack exchange,提问作者Paul S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:36:05