Android 基于具有空值的对象生成字符串

Android 基于具有空值的对象生成字符串,android,kotlin,stringbuilder,Android,Kotlin,Stringbuilder,我有我的自定义对象“OberSavation”。此对象的某些值可能为null。现在我想基于这些值创建一个字符串,忽略空值 现在我正在做这样的事情: val myList = arrayListOf<String>() if (observation.country != null) myList.add(observation.country) if (observation.group != null) myList.add(observation.group) if (obse

我有我的自定义对象“OberSavation”。此对象的某些值可能为null。现在我想基于这些值创建一个字符串,忽略空值

现在我正在做这样的事情:

val myList = arrayListOf<String>()

if (observation.country != null) myList.add(observation.country)
if (observation.group != null) myList.add(observation.group)
if (observation.locality != null) myList.add(observation.locality)

val myString = TextUtils.join(" - ", myList)
val myList=arrayListOf()
如果(observation.country!=null)myList.add(observation.country)
if(observation.group!=null)myList.add(observation.group)
if(observation.locality!=null)myList.add(observation.locality)
val myString=TextUtils.join(“-”,myList)
这样,我检查哪些值为null,只有当它们不为null时,我才会将其添加到列表中。然后我继续用破折号分隔所有值。它产生了我想要的东西,但我担心这样做对性能不利,因为我在代码中做了很多“如果”

有什么办法可以改进吗

listOfNotNull(observation.country, observation.group, observation.locality)
             .joinToString(" - ")
可简化为:

val myString = with(observation) {
  listOfNotNull(country, group, locality).joinToString(" - ")
}

这可能是最简单的使用方法,对于这一点来说。

这是完美的。我刚测试过,正在工作。非常感谢。