List转换成Tree
来源:互联网 发布:智慧足迹数据 编辑:程序博客网 时间:2024/06/06 00:39
package demo01;import java.util.List;/** * 树节点 * * @author * */public class TreeNode {private String id;private String pid;private String name;private List<TreeNode> children;public TreeNode(String id, String name, String pid) {this.id = id;this.name = name;this.pid = pid;}public TreeNode(String id, String name, TreeNode parent) {this.id = id;this.name = name;this.pid = parent.getId();}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPid() {return pid;}public void setPid(String pid) {this.pid = pid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<TreeNode> getChildren() {return children;}public void setChildren(List<TreeNode> children) {this.children = children;}@Overridepublic String toString() {return "TreeNode [id=" + id + ", pid=" + pid + ", name=" + name + ", children=" + children + "]";}}
package demo01;import java.util.ArrayList;import java.util.List;public class TreeBuilder {/** * 构造树形结构(双重for循环) * @param treeNodes * @return */public static List<TreeNode> build(List<TreeNode> treeNodes) {List<TreeNode> treeNodeList = new ArrayList<TreeNode>();for (TreeNode treeNode : treeNodes) {if ("NULL".equals(treeNode.getPid())) {treeNodeList.add(treeNode);}for (TreeNode it : treeNodes) {if (it.getPid() == treeNode.getId()) {if (treeNode.getChildren() == null) {treeNode.setChildren(new ArrayList<TreeNode>());}treeNode.getChildren().add(it);}}}return treeNodeList;}/** * 构造树形结构(递归) * @param treeNodes * @return */public static List<TreeNode> build2(List<TreeNode> treeNodes) {List<TreeNode> trees = new ArrayList<TreeNode>();for (TreeNode treeNode : treeNodes) {if ("NULL".equals(treeNode.getPid())) {trees.add(findChildren(treeNode, treeNodes));}}return trees;}public static TreeNode findChildren(TreeNode treeNode, List<TreeNode> treeNodes) {for (TreeNode it : treeNodes) {if (treeNode.getId().equals(it.getPid())) {if (treeNode.getChildren() == null) {treeNode.setChildren(new ArrayList<TreeNode>());}treeNode.getChildren().add(findChildren(it, treeNodes));}}return treeNode;}}
package demo01;import java.util.ArrayList;import java.util.List;public class Start {public static void main(String[] args) {TreeNode treeNode_1 = new TreeNode("1","辽宁","NULL");TreeNode treeNode_1_1 = new TreeNode("2","沈阳",treeNode_1);TreeNode treeNode_1_2 = new TreeNode("3","大连",treeNode_1);List<TreeNode> list = new ArrayList<TreeNode>(); list.add(treeNode_1);list.add(treeNode_1_1);list.add(treeNode_1_2);List<TreeNode> trees_1 = TreeBuilder.build(list);System.out.println(trees_1);//List<TreeNode> trees_2 = TreeBuilder.build2(list);//System.out.println(trees_2);}}
输出结果:[TreeNode [id=1, pid=NULL, name=辽宁, children=[TreeNode [id=2, pid=1, name=沈阳, children=null], TreeNode [id=3, pid=1, name=大连, children=null]]]]
阅读全文
0 0
- List转换成Tree
- 普通LIST列表转换为Tree
- 普通LIST列表转换为Tree
- List<?> 转换成List<Student>
- LeetCode | Convert Sorted List to Binary Search Tree(链表转换成二叉搜索树)
- ssh2 action中的list如何转换成json然后传递给extjs tree?list查询到两条记录,tree中显示一条记录
- 简单的list查询转换为tree结构
- Java小程序:list和tree相互转换
- List转换成DataSet
- List 转换成字符串
- ResultSet 转换成 List
- List转换成DataTable
- DataTable 转换成 List
- List转换成DataSet
- List 转换成字符串
- List 转换成字符串
- list 转换成json
- List转换成DataSet
- java 集合 Set
- 使用maven时出现Failure to transfer 错误的解决方法(再次掉入神坑)
- 莫队算法
- RPC框架技术初窥
- 【easyui】禁用元素
- List转换成Tree
- CNN中特征映射层(S2)有特征提取层(C3)特征映射是怎么作用的
- Redis协议
- PHP面向对象特性-多态
- Java_基础—字符流FileWriter
- FZU 2275 Game【博弈】
- adb不能用
- PHP学习记录
- 桥设备及端口的开启和关闭(四)