Kotlin-递归获取所有子级
我是科特林的新手,我正试图找到让所有孩子都参与进来的最佳方式 我有这个数据类Kotlin-递归获取所有子级,kotlin,Kotlin,我是科特林的新手,我正试图找到让所有孩子都参与进来的最佳方式 我有这个数据类 data class BigObj(val id: Int, val text: String, val parentId: Int?, val children: ArrayList<BigObj>) Kotlin也有类似的功能吗?Kotlin也在中实现了惰性集合处理。 stdlib中没有SelectRecursive函数,但您可以自己定义它: fun Sequence.selectRecursive(
data class BigObj(val id: Int, val text: String, val parentId: Int?, val children: ArrayList<BigObj>)
Kotlin也有类似的功能吗?Kotlin也在中实现了惰性集合处理。 stdlib中没有
SelectRecursive
函数,但您可以自己定义它:
fun Sequence.selectRecursive(recursiveSelector:T.()->Sequence):Sequence=flatMap{
序列{
产量(it)
yieldAll(it.recursiveSelector().selectRecursiveSelector(recursiveSelector))
}
}
现在,您可以通过以下简单方式将BigObj
s的列表(或任何Iterable
)转换为所需的平面序列:
val-result:Sequence=source.asSequence().selectRecursive{children.asSequence()}
看起来它只下降了一级。如果孩子有自己的孩子-代码不起作用。哎呀!修好了。
foreach (var parent in source)
{
yield return parent;
var children = selector(parent);
foreach (var child in SelectRecursive(children, selector))
yield return child;
}