形构建
题目:
转换树形,将IEntityTable的树形,经InputEntityValidList进行过滤,并重新构建树形:
1、如果父节点不在过滤列表内,则向上判断,直到上级节点存在时,挂到该节点下。或找不到上级节点,挂到根节点下。
2、根据传参curEntityKey,将该节点的isSelected置为true
3、根据传参InputEntityValidList,将节点的isChecked置为true
4、根据新树形,设置节点的ITree<>的isLeaf属性
比如:
【原始EntityQuery树形】:
A
A1
A11
A111
A12
A2
A21
A22
B
B1
B11
InputEntityValidList:A,A111, A12,B11
curEntityKey:A
则新树形为:
A(isChecked:true, isSelected:true, isLeaf:false)
A111(isChecked:true, isSelected:false, isLeaf:true)
A12(isChecked:true, isSelected:false, isLeaf:true)
B11(isChecked:true, isSelected:false, isLeaf:false)
输入参数
IEntityTable entityTable, List inputEntityValidList, String curEntityKey
输出:
List<ITree>
节点转换示例:
ITree target = new ITree(LightNodeData.buildEntityData(row));
target.setLeaf(true);
target.setSelected(true);
target.setChecked(true);
import java.util.ArrayList;
import java.util.List;
public class TreeNode {
private LightNodeData data;
private boolean isLeaf;
private boolean isChecked;
public TreeNode(LightNodeData data) { this.data = data; this.isLeaf = false; this.isChecked = false; } public LightNodeData getData() { return data; } public void setData(LightNodeData data) { this.data = data; } public boolean isLeaf() { return isLeaf; } public void setLeaf(boolean isLeaf) { this.isLeaf = isLeaf; } public boolean isChecked() { return isChecked; } public void setChecked(boolean isChecked) { this.isChecked = isChecked; } @Override public String toString() { return data.toString(); }
}
public class TreeNodeData {
private LightNodeData data;
public TreeNodeData(LightNodeData data) { this.data = data; } public LightNodeData getData() { return data; } public void setData(LightNodeData data) { this.data = data; }
}
public class TreeNodeTree {
private TreeNode 然后,我们定义了一个TreeNodeData类来表示树形节点的数据,包含节点的数据。接着,我们定义了一个TreeNodeTree类来表示树形树,包含根节点和一个buildTree方法来构建树形。在buildTree方法中,我们首先判断数据列表是否为空,如果不为空,则取出第一个数据作为根节点,然后遍历数据列表中的所有数据,对于每个数据,构建一个新的节点,并根据节点的选中状态设置节点的数据。最后,我们将根节点的数据设置为新构建的节点的数据。
需要注意的是,在实际应用中,我们需要根据具体的业务需求来构建树形,并根据需要设置节点的数据和状态。同时,我们还需要考虑树形的复杂度和性能等问题,是否为叶子节点以及是否为选中状态。我们还定义了一个TreeNodeData类来表示树形节点的数据,包含节点的数据以及是否为叶子节点和是否为选中状态。
接下来,我们定义了一个TreeNodeTree类来表示整个树形结构,包含根节点。在构造函数中,我们从数据列表中获取第一个数据,并创建一个新的节点对象。然后,我们遍历数据列表中的所有数据,对于每个数据,创建一个新的节点对象,并根据节点是否为叶子节点和是否为选中状态来设置节点的数据和状态。最后,我们将根节点的数据设置为新创建的节点对象的数据。
最后,我们可以使用以下代码来测试树形构建的功能:
public static void main(String[] args) {
TreeNodeData data1 = new TreeNodeData(new LightNodeData(“A”));
TreeNodeData data2 = new TreeNodeData(new LightNodeData(“A1”));
TreeNodeData data3 = new TreeNodeData(new LightNodeData(“A11”));
TreeNodeData data4 = new TreeNodeData(new LightNodeData(“A12”));
TreeNodeData data5 = new TreeNodeData(new LightNodeData(“B1”));
TreeNodeData data6 = new TreeNodeData(new LightNodeData(“B11”));
TreeNodeTree tree = new TreeNodeTree(tree); tree.buildTree(dataList);
}
public static void main(String[] args) {
TreeNodeData data1 = new TreeNodeData(new LightNodeData(“A”));
TreeNodeData data2 = new TreeNodeData(new LightNodeData(“A1”));
TreeNodeData data3 = new TreeNodeData(new LightNodeData(“A11”));
TreeNodeData data4 = new TreeNodeData(new LightNodeData(“A12”));
TreeNodeData data5 = new TreeNodeData(new LightNodeData(“B1”));
TreeNodeData data6 = new TreeNodeData(new LightNodeData(“B11”));
TreeNodeTree tree = new TreeNodeTree(tree); tree.buildTree(dataList);
}