基于具有空值的对象构建字符串
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
可能是最简单的。
我有我的自定义对象 "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
可能是最简单的。