根据具有空值的对象构建字符串

时间:2018-11-28 15:53:17

标签: android kotlin stringbuilder

我有我的自定义对象“ 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”操作。

有什么方法可以改善这一点?

1 个答案:

答案 0 :(得分:3)

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

可以简化为:

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

为此仅使用listOfNotNulljoinToString可能是最简单的。