递归例子(Java)
来源:互联网 发布:商务礼仪 知乎 编辑:程序博客网 时间:2024/05/09 09:32
目标:把一个关系型数据库中<子,父>关系的并列型列表转换成为一个层级架构树。
DB:
parent node------ -------
soft_1 staff_B
soft_1 staff_C
dev soft_1
dev soft_2
dev staff_A
gm_A dev
gm_A hr
gm_A market
hr staff_E
soft_2 staff_D
boss gm_A
NULL boss
最终架构树:
bossgm_Adevsoft_1staff_B staff_C soft_2staff_D staff_A market hrstaff_E这种情况需要用到递归。
主程序:
FileOrganizationNode treeNode = new FileOrganizationNode();List<FileOrganization> fileOrganizations = new ArrayList<FileOrganization>();fileOrganizations = fileOrganizationService.findNodeByOrganizationName(organizationName, limit);treeNode.setName(rootNode.getNodeName());addTreeNode(treeNode, rootNode.getNodeName(), fileOrganizations);// 递归插入子node* fileOrganizations 就是上面的<子,父>列表,rootNode.getNodeName() 取值为"boss"。
FileOrganization(包含其它内容) / FileOrganizationNode(只有子、父名)
/** * * file_organization * * 组织上下级关系描述 * */public class FileOrganization {private String nodeName;private String nodeParentName;...
public class FileOrganizationNode {private String name;private List<FileOrganizationNode> children;
addTreeNode方法:
// 递归插入子nodepublic void addTreeNode(FileOrganizationNode treeNode, String parentNode, List<FileOrganization> fileOrganizations) {final Integer DEF_VALUE = 20;List<FileOrganizationNode> childTreeNodes = new ArrayList<FileOrganizationNode>();for (FileOrganization fileOrganization:fileOrganizations) {if (parentNode.equals(fileOrganization.getNodeParentName())) {FileOrganizationNode childTreeNode = new FileOrganizationNode();childTreeNode.setName(fileOrganization.getNodeName());childTreeNode.setValue(DEF_VALUE);childTreeNode.setNodeType(fileOrganization.getNodeType());childTreeNodes.add(childTreeNode);// 通过传参childTreeNode串联递归addTreeNode(childTreeNode, fileOrganization.getNodeName(), fileOrganizations);}}if (!childTreeNodes.isEmpty()) {treeNode.setChildren(childTreeNodes);}}
treeNode内容:
参考:
递归例子(Javascript)http://blog.csdn.net/textboy/article/details/46544379
0 0
- 递归例子(Java)
- Java递归(趣味例子)
- java 递归(字符串、数字)例子
- JAVA递归经典例子
- java 递归 小例子
- JAVA递归例子
- Java递归阶乘小例子
- java递归简单例子练习
- 递归例子(Javascript)
- Java递归算法的小例子
- java实现汉诺例子,递归调用
- Java递归 遍历目录的小例子
- java递归实现两个小例子
- 递归例子
- 递归--例子
- 递归例子
- 递归例子
- 递归例子
- ACL
- google hacking使用记录
- (转)eclipse中使用git
- 未雨绸缪:程序员保值的5个秘密
- arcgis FLEXnet Licensing error:-42,147解决办法
- 递归例子(Java)
- ubuntu下文件中^M符号的去除方法
- 自己实现strstr函数
- MFC 在Dialog中button与回车键
- 内部排序(二)快速排序
- Python中的strftime()
- 训练自己haar-like特征分类器并识别物体(2)
- oracle T-SQL
- 训练自己的haar-like特征分类器并识别物体(3)