请告诉我如何在这样的数据结构中(为了更好地理解而简化)将实体的所有子项放入一个列表中:
fun main() {
val listOfEntities = listOf(
Entity(
name = "John",
entities = listOf(
Entity(
name = "Adam",
entities = listOf()
),
Entity(
name = "Ivan",
entities = listOf(
Entity(
name = "Henry",
entities = listOf(
Entity(
name = "Kate",
entities = listOf(
Entity(
name = "Bob",
entities = listOf()
)
)
)
)
)
)
)
)
)
)
val result = listOfEntities.flatMap { it.entities }.map { it.name }
println(result)
}
data class Entity(
val name: String,
val entities: List<Entity>
)
我希望看到以下结果:
[John, Adam, Ivan, Henry, Kate, Bob]
我尝试使用 flatMap,但没有达到预期的结果。
提前谢谢您!
最佳答案
您可以像这样递归地遍历实体树:
fun List<Entity>.flattenEntities(): List<Entity> =
this + flatMap { it.entities.flattenEntities() }
然后你就可以打电话了
val result = listOfEntities.flattenEntities().map { it.name }
获得想要的结果。
关于list - 将 child 放在一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71601819/