`

从数据库中读取列表用java语言转换成树形

    博客分类:
  • tree
阅读更多

从数据库中读取数据列表,通过后台代码将数据转换成树形,代码如下

 

/**

 * 树节点

 *

 */

public class TreeNode{

//节点id

private String id; 

//父节点id

private String parentId; 

//文本

private String text;

//节点状态

private String state = "open";

//是否选中

private Boolean isChecked = false;

//子节点集合

private List<TreeNode> children;

 

public TreeNode(){}

 

public TreeNode(String parentId,String id,String text){

this.id = id;

this.parentId = parentId;

this.text = text;

}

 

public TreeNode(String id,String parentId,String text,String state, Boolean isChecked){

this.id = id;

this.parentId = parentId;

this.text = text;

this.state = state;

this.isChecked = isChecked;

}

 

 

/**

* 返回json

* @return

*/

/* public String toJsonString(){

String result = "{"

           + "\"id\" : \"" + id + "\""

           + ", \"text\" : \"" + text + "\"";

        

        if (children != null && children.size() != 0) {

            result += ", \"children\" : " + children.toString();

        } else {

            result += ", \"leaf\" : true";

        }

                

return result + "}";

}*/

 

 

//get set

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getParentId() {

return parentId;

}

public void setParentId(String parentId) {

this.parentId = parentId;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getState() {

return state;

}

public void setState(String state) {

this.state = state;

}

public Boolean getIsChecked() {

return isChecked;

}

public void setIsChecked(Boolean isChecked) {

this.isChecked = isChecked;

}

public List<TreeNode> getChildren() {

return children;

}

public void setChildren(List<TreeNode> children) {

this.children = children;

}

}

 

 

 

/**

 * 将list展示成一棵树

 *

 */

public class ShowTreeUtils {

 

/**

* 将list转换成tree

* @param list

* @return

* @throws IOException 

*/

public static String showTree(List<TreeNode> menuList) throws IOException{

List<TreeNode> nodeList = new ArrayList<TreeNode>();  //存放父节点的list

 

for(TreeNode node1 : menuList){  

     boolean isChildMark = false;  //标志该节点是否是子节点,isChildMark为false表示不是子节点

     for(TreeNode node2 : menuList){  

         if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){  

         isChildMark = true;  

             if(node2.getChildren() == null){

             node2.setChildren(new ArrayList<TreeNode>()); 

             }

             node2.getChildren().add(node1); 

             //node2.setState("closed");

             break;  

         } 

     }  

     if(!isChildMark){  

         nodeList.add(node1);   //将父节点放到nodeList中

     }  

 }

 

ObjectMapper mapper = new ObjectMapper();

String json = mapper.writeValueAsString(nodeList);

 

return json;

}

}

 

 

//测试类

public class TreeTest {

public static void main(String[] args) throws  IOException {

List<TreeNode> menuList = new ArrayList<TreeNode>();  

TreeNode root = new TreeNode("000000000000", "500000000000", "公共通讯录目录"); //根节点

TreeNode root1 = new TreeNode("000000000000", "600000000000", "个人通讯录目录"); //根节点

TreeNode b = new TreeNode("500000000000", "63000000000000000001", "青海省民政厅");

TreeNode c = new TreeNode("63000000000000000001", "63010000000000000002", "西宁");

TreeNode d = new TreeNode("63010000000000000002", "63010200000000000004", "城东");

TreeNode e = new TreeNode("63000000000000000001", "63210000000000000011", "海东");

TreeNode f = new TreeNode("63210000000000000011", "63212100000000000012", "平安");

TreeNode g = new TreeNode("63210000000000000011", "63212200000000000013", "民和");

TreeNode h = new TreeNode("63210000000000000011", "63212300000000000014", "乐都");

menuList.add(root);

menuList.add(root1);

menuList.add(b);

menuList.add(c);

menuList.add(d);

menuList.add(e);

menuList.add(f);

menuList.add(g);

menuList.add(h);

 

 

   //转为json格式        

   String json = ShowTreeUtils.showTree(menuList);

   System.out.println("json:"+json);  

 

}

 

}

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    JAVA后台转换成树结构数据返回给前端的实现方法

    主要介绍了JAVA后台转换成树结构数据返回给前端的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java源码包---java 源码 大量 实例

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包2

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    Java开发技术大全(500个源代码).

    lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发错误示例1 narrowingConversion_2.java 缩减转换...

    JAVA上百实例源码以及开源项目源代码

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包4

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包3

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    Ajax 四级导航菜单ASP+Access动态版

    文字从左边移动到右边,JS循环控制 JavaScript使用indexOf搜索字符串并返回位置 Javascript文字左右反弹的效果代码 CSS最简单的阴影文字特效 JavaScript隐藏显示文字 JavaScript控制字符大小写转换 JS逐字变化文字...

    易语言程序免安装版下载

    互联网支持库中的“FTP目录列表”命令返回的文件时间改为FTP服务器返回的原始时间,不做任何时区转换。 4. 互联网支持库中的“置代理服务器”命令增加了参数,用于支持代理服务器用户认证。 5. 修改控制台操作...

Global site tag (gtag.js) - Google Analytics