在 Kotlin 中组合多个可空集合

问题描述 投票:0回答:1

我正在开发一个 kotlin 函数,该函数需要将一系列可为空的集合组合成一个输出集合。显而易见的解决方案是暴力。使用一系列 if/else 语句来确定哪些集合不为空,并相应地组合它们。然而,这个解决方案很混乱并且容易出错。我正在寻找的是一个现有的 kotlin 函数,它可以接受 n+1 个可为空的集合并输出一个包含其组合内容的新集合。是否存在这样的事情,或者我必须以困难的方式做到这一点?

示例:

//list1:['a','b','c']
//list2:null
//list3:['x','y']
func combineStuff(list1:List<String>?, list2:List<String>?, list3:List<String>? )
{
    return list1 + list2 + list3
    //['a','b','c','x','y']
}
kotlin collections nullable
1个回答
0
投票

最简单的选择可能是使用适用于所有

.orEmpty()
值的
Collection<T>?
方法:

list1.orEmpty() + list2.orEmpty() + list3.orEmpty()

list.orEmpty()
返回列表本身(如果不是)
null
。否则,它返回一个空列表。换句话说,使用它就相当于
(list ?: emptyList())

另请参阅官方 API 文档

© www.soinside.com 2019 - 2024. All rights reserved.