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

标签 android kotlin stringbuilder

我有我的自定义对象“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 可能是最简单的和 joinToString为此。

关于android - 基于具有空值的对象构建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523365/

相关文章:

kotlin - 为什么 Kotlin/JS 为 === 返回的结果与 Kotlin/JVM 不同?

java - 构建字符串的程序出现问题

Java CharAt() 和 deleteCharAt() 性能

java - SurfaceView 中的 Toast

asynchronous - 如何使用协程传递结果?

spring-mvc - AsyncRestTemplate + 协程

java - StringBuilder.append(CharSequence) 没有 IOException?

android - PhoneGap 安卓 : Input color and focus weird (with images! )

java - 无法使用对象列表写入/读取文件

android - AudioManager.getProperty API android版本