請告訴我如何在這樣的資料結構中(為了更好地理解而進行了簡化)將物體的所有子項放入一個串列中:
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,但并沒有達到預期的結果。
先感謝您!
uj5u.com熱心網友回復:
您可以像這樣遞回地遍歷物體樹:
fun List<Entity>.flattenEntities(): List<Entity> =
this flatMap { it.entities.flattenEntities() }
然后你可以打電話
val result = listOfEntities.flattenEntities().map { it.name }
以獲得所需的結果。
uj5u.com熱心網友回復:
你可以這樣做
fun List<Entity>.flatten(): List<String> {
return flatMap { listOf(it.name) it.entities.flatten()}
}
然后
val result = listOfEntities.flatten()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448677.html
