Построить строку на основе объекта с нулевыми значениями
У меня есть свой объект "Наблюдение". Этот объект имеет некоторые значения, которые могут быть нулевыми. Теперь я хочу создать строку на основе этих значений, игнорируя нулевые.
Прямо сейчас я делаю что-то вроде этого:
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)
Таким образом, я проверяю, какие значения являются нулевыми, и только если они не равны нулю, я добавляю их в свой список. Затем я продолжаю разделять все значения тире. Он производит то, что я хочу, но я боюсь, что такое поведение вредно для производительности, так как я делаю много "если" в своем коде.
Есть ли способ улучшить это?
1 ответ
Решение
listOfNotNull(observation.country, observation.group, observation.locality)
.joinToString(" - ")
который может быть упрощен до:
val myString = with(observation) {
listOfNotNull(country, group, locality).joinToString(" - ")
}
Это, наверное, самый простой в использовании listOfNotNull
а также joinToString
за это.