Я пытаюсь использовать Iterable.map, но вместо преобразования каждого значения в одно новое значение я хочу преобразовать одно значение в несколько новых значений.
Например:
val myList = listOf("test", "123", "another.test", "test2")
val result = myList.map {
if (it.contains(".")) {
return@map it.split(".")
} else {
return@map it
}
}
//desired output: ["test", "123", "another", "test", "test2"]
Этот код приведет к списку, который содержит как строки, так и списки строк (тип Any).
Как я могу наиболее элегантно реализовать это?





Один из быстрых способов сделать это — использовать flatMap.
val output = myList.flatMap { if (it.contains(".")) it.split(".") else listOf(it) }
Метод flatMap преобразует каждый элемент с помощью заданной функции, а затем объединяет результат в один список.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html