Построить строку на основе объекта с нулевыми значениями

У меня есть свой объект "Наблюдение". Этот объект имеет некоторые значения, которые могут быть нулевыми. Теперь я хочу создать строку на основе этих значений, игнорируя нулевые.

Прямо сейчас я делаю что-то вроде этого:

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 за это.

Другие вопросы по тегам