基于具有空值的对象构建字符串

Build a String based on an Object with null values

我有我的自定义对象 "Obersvation"。该对象有一些可能为空的值。现在我想根据这些值创建一个字符串,忽略空值。

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

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)

通过这种方式,我检查哪些值为空,只有当它们不为空时,我才将其添加到我的列表中。然后我继续用破折号分隔所有值。它正在产生我想要的东西,但我担心这样做对性能不利,因为我在我的代码中做了很多 "ifs"。

有什么改进方法吗?

listOfNotNull(observation.country, observation.group, observation.locality)
             .joinToString(" - ")

可以简化为:

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

为此使用 listOfNotNull and joinToString 可能是最简单的。