有一棵树的形式
a
/|\
b c d
/\ \
e f g
如何通过某个元素获取子元素列表(我们将“a”传递给函数,我们得到了一个 [b,c,d,e,f,g] 数组。我们传递了“b”我们得到了 [ e,f]) 元素有父ID,是否为“容器”
protected void fetchChildElements(Elem parentElem, List<Elem> childElems, List<Elem> allElem) {
for (Elem childElem : allElem) {
String parentElemId = childElem.getParentElemId();
if (parentElemId != null && parentElemId.equals(parentElem.getId())) {
if (childElem.getElemCategory() == DeviceCategory.CONTAINER) {
fetchChildElements(childElem, childElems, allElem);
}
childElems.add(childElem);
}
}
}
嗯,例如。
让我们构建一个元素到其父元素的映射。您可以这样做一次,并在每次树更改时更新表。或者只是使用一个函数而不是一个
String getParentElemId()函数Elem getParentElem()。你得到这个:
现在,要检查每个元素,只需遍历父链并在其中寻找正确的元素就足够了: