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

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

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)

这样,我检查哪些值为空,并且只有当它们不为空时,才将其添加到列表中。然后,我用破折号分隔所有值。它正在产生我想要的东西,但是我担心这样做会降低性能,因为我在代码中做了很多“if”操作。

有什么办法可以改善这个?

最佳答案

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

可以简化为:
val myString = with(observation) {
  listOfNotNull(country, group, locality).joinToString(" - ")
}

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

09-11 02:28