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

Kotlin中如何合并多个可空集合?是否有现成函数?

合并多个可空集合的简洁解法

你完全不用写繁琐的if/else判断,Kotlin有好几种简洁的方式实现这个需求:

方法1:过滤空值后扁平化

把所有可空集合放进一个列表,过滤掉null后直接扁平化合并:

fun combineStuff(list1: List<String>?, list2: List<String>?, list3: List<String>?): List<String> {
    return listOf(list1, list2, list3)
        .filterNotNull()
        .flatten()
}
  • listOf(list1, list2, list3):将三个可空集合包装成一个List<List<String>?>
  • filterNotNull():移除所有null元素,得到List<List<String>>
  • flatten():把嵌套列表展开成单个列表,完成合并

方法2:Elvis操作符结合plus

利用Kotlin的Elvis操作符?:,把null替换为空集合,再直接用+合并:

fun combineStuff(list1: List<String>?, list2: List<String>?, list3: List<String>?): List<String> {
    return (list1 ?: emptyList()) + (list2 ?: emptyList()) + (list3 ?: emptyList())
}

这种写法和你示例里的思路最接近,只是给每个可空集合加了兜底的空集合,避免直接加null抛出异常。

方法3:用buildList构建

如果需要更灵活的添加逻辑(比如后续要加更多集合),用buildList可读性更好:

fun combineStuff(list1: List<String>?, list2: List<String>?, list3: List<String>?): List<String> {
    return buildList {
        list1?.let { addAll(it) }
        list2?.let { addAll(it) }
        list3?.let { addAll(it) }
    }
}

buildList会创建一个可变列表,我们只需要在里面判断每个集合非空时就添加所有元素,最后返回不可变的列表。

这几种方法都比手动写if/else简洁得多,而且不容易出错,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:21:06