精华内容
下载资源
问答
  • 主要介绍了Java实现生成Excel树形表头完整代码示例,具有一定借鉴价值,需要的朋友可以参考下。
  • Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
  • #什么是树形结构数据展示在页面上的效果Java代码实现树形结构数据1.建立树形结构树的展示模型2.实现逻辑结束 #什么是树形结构数据 展示在页面上的效果 Java代码实现树形结构数据 1.建立树形结构树的展示模型 ...

    1、什么是树形结构数据在这里插入图片描述

    在我们的项目中,前台作为页面的展示区域,可能需要你返回一些具有层级关系的数据,进行页面展示,如1.1所示。

    1.1、展示在页面上的效果

    这里是很简单的二级树的效果

    2、Java实现树形结构数据

    2.1、树对象

    tree的domain
    树对象的属性主要有四个(实际情况可能有所不同)。

    • id(节点id)
    • name(节点名称)
    • fatherId(父节点id)
    • List<树对象>chilNode(子节点数据)

    2.2、示例代码

    实现的代码如下,每一步都有注释,大家可以进行参考。

     piblic  List<TreeData> getTree(){
      // 储存所有的子节点的数据
      List<TreeData> tempList = new ArrayList<>(); 
      // 储存最顶级父节点的数据    
      List<TreeData> resultList = new ArrayList<>(); 
            
      //循环顶级父节点数据,目的是在每一个父级树节点中装填对应的子节点数据
      List<TreeData> data_tree = new ArrayList<TreeData>();   
      // 递归装填数据
     for (TreeData treeData : resultList) {    
             data_tree.add(getChildNode(tempList, treeData));   
          }
    }
    
    private TreeData getChildNode(List<TreeData> tempList, TreeData fatherTree) {
            for (TreeData treeData : tempList) {
                if (treeData.getFatherId() == fatherTree.getId()) {
                    fatherTree.getChildNode().add(treeData);                             
                    getChildNode(tempList, treeData);//注意这里
                 }
                return fatherTree;
            }
           return fatherTree;}
    

    基础的实现思路如上(实际情况结合业务代码后可能会扫许的复杂),当然也有更加简洁的实现方式(jdk1.8后用Lambda表达式几行就实现了,网上有很多例子,但实现思路是不变的)。

    3、结束

    一个人走的快,一群人走的远,一起学习,一起进步。

    展开全文
  • 树形结构是非常常见的数据结构,生成树形结构的方法比较常见的有递归,for循环,不管使用什么方法,如果能很好地利用内存来合理地添加树节点,则能极大提高效率 测试代码如下: public class TestTree { ...

    树形结构是非常常见的数据结构,生成树形结构的方法比较常见的有递归,for循环,不管使用什么方法,如果能很好地利用内存来合理地添加树节点,则能极大提高效率

    测试代码如下:

    public class TestTree {
    	
    	public static void main(String[] args) {
    		C3p0Jdbc jdbc = new C3p0Jdbc();
    		String sql = "SELECT code value,up_code upCode,name label,level FROM test_table WHERE level < 4 ORDER BY level";
    		JSONArray arr = jdbc.query(sql);
    		// 先将数据循环放入新建的map中
    		Map<String, JSONObject> treeMap = new HashMap<>();
    		int length = arr.size();
    		long t1 = System.currentTimeMillis();
    		for (int i = 0; i < length; i++) {
    			String key = arr.getJSONObject(i).getString("value");
    			treeMap.put(key, arr.getJSONObject(i));
    		}
    		long t2 = System.currentTimeMillis();
    		System.out.println("循环用时:" + (t2 - t1) + "ms");
    		JSONArray new_tree = new JSONArray();
    		// 再使用双层for循环,根据判断条件,将符合条件的节点数据添加到树形结构中
    		for (int i = 0; i < length; i++) {
    			JSONObject parent = arr.getJSONObject(i);
    			String key = parent.getString("value");
    			int level = parent.getIntValue("level");
    			// 这是唯一一处需要 new 对象的地方
    			JSONArray children = new JSONArray();
    			for (int j = 0; j < length; j++) {
    				JSONObject child = arr.getJSONObject(j);
    				String childKey = child.getString("value");
    				String upCode = child.getString("upCode");
    				if (upCode.equals(key)) {
    					children.add(treeMap.get(childKey));
    				}
    			}
    			parent.put("children", children);
    			if (level == 1) {
    				new_tree.add(parent);
    			}
    		}
    		
    		long t3 = System.currentTimeMillis();
    		System.out.println("第二次遍历用时:" + (t3 - t2) + "ms");
    		System.out.println("全过程用时:" + (t3 - t1) + "ms");
    	}
    	
    }
    

    在for循环中务必要减少new 对象的次数,New 对象是很耗时的操作,不仅仅是 new 对象会很耗时,其它操作比如将一个 object 转为 jsonarray 或 json 也会很耗时,因为这种操作修改了内存中对象的引用地址,测试代码中最优势的地方就是将所有的对象都加载到map中,在new_tree.add(parent)的操作时是直接将parent对象的内存引用地址添加到了new_tree中,所以效率非常快,我的测试数据是3227条国内的省市区县数据,全过程用时在600~850 ms之间 效果如图:

    感谢同事TX提供思路

    转载于:https://my.oschina.net/u/4118973/blog/3086432

    展开全文
  • java 生成 树形结构数据(tree)

    万次阅读 2017-04-25 19:21:14
    3、json数据分析:数据生成的时候,“text“ 对应的内容就是中显示内容,然后设置“nodes”(子节点),子节点中又是先放入“text”,而后是“nodes”,这里需要一个递归来完成,当没有子节点的时候递归中断。...

    这里以bootstrap treeview为示例:

    1、先看前端效果:http://jonmiles.github.io/bootstrap-treeview
    2、前端效果中右键查看源码,我们直接去看json数据是什么样滴~:

    var json = '[' +
              '{' +
                '"text": "Parent 1",' +
                '"nodes": [' +
                  '{' +
                    '"text": "Child 1",' +
                    '"nodes": [' +
                      '{' +
                        '"text": "Grandchild 1"' +
                      '},' +
                      '{' +
                        '"text": "Grandchild 2"' +
                      '}' +
                    ']' +
                  '},' +
                  '{' +
                    '"text": "Child 2"' +
                  '}' +
                ']' +
              '},' +
              '{' +
                '"text": "Parent 2"' +
              '},' +
              '{' +
                '"text": "Parent 3"' +
              '},' +
              '{' +
                '"text": "Parent 4"' +
              '},' +
              '{' +
                '"text": "Parent 5"' +
              '}' +
            ']';


    3、json数据分析:数据生成的时候,“text“ 对应的内容就是树中显示内容,然后设置“nodes”(子节点),子节点中又是先放入“text”,而后是“nodes”,这里需要一个递归来完成,当没有子节点的时候递归中断。
    4、我的数据表:(PARENT_ID ='' 为最高级父节点)


    5、java递归代码:

    public List<Map> getChildrens(List<Map> list) throws SystemException {
    		//数据最终结果
    		List<Map> result = new ArrayList<Map>();
    		//1、循环最高级父节点数据
    		for(Map map : list){
    			Map tempMap = new HashMap();
    			//2、放入json数据
    			tempMap.put("text", map.get("ORG_NAME"));
    			
    			//3、判断是否存在子节点
    			if(map.get("LEAF").equals("0")){
    				//4、根据父节点id获取子节点
    				StringBuffer sb = new StringBuffer();
    				sb.append("SELECT * FROM `mst_org` org where org.PARENT_ID ='"+map.get("ORG_ID")+"' ");
    				//5、调取自己循环获取子节点
    				List<Map> childs =  this.getChildrens(this.getDao().findBySql(sb.toString(), Map.class));
    				tempMap.put("nodes", childs);
    			}
    			result.add(tempMap);
    		}
    		return result;
    	}


    6、dao调取:
    public List<Map> loadMstOrgForTree() throws SystemException {
    		List<Map> result = new ArrayList<Map>();
    		//获取顶级父节点
    		StringBuffer sb = new StringBuffer();
    		sb.append("SELECT * FROM `mst_org` org where org.PARENT_ID ='' ");
    		List<Map> list = this.getChildrens(this.getDao().findBySql(sb.toString(), Map.class));
    		
    		return list;
    	}

     最终效果图:



    看过的大兄弟、小胸弟 给顶一下吧,也可以关注我的新浪微博:俺叫范小赖        随时联系我哦




    展开全文
  • 下面小编就为大家带来一篇java、js中实现无限层级的树形结构方法(类似递归)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java 递归生成树形结构

    千次阅读 2018-12-20 17:19:21
    package com.lsn.ams; import ... import java.util.*; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class...
    package com.lsn.ams;
    
    import com.alibaba.fastjson.JSONArray;
    import java.util.*;
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Test {
    
    
        public static void main(String[] args) {
            List<Tree> data = new ArrayList<Tree>();
    
            Tree tree = new Tree();
            tree.setId("1");
            tree.setPid("0");
            tree.setName("系统管理");
    
            data.add(tree);
    
            tree = new Tree();
    
            tree.setId("2");
            tree.setPid("1");
            tree.setName("管理员列表");
            data.add(tree);
    
            tree = new Tree();
            tree.setId("3");
            tree.setPid("2");
            tree.setName("新增管理员");
            data.add(tree);
    
            tree = new Tree();
            tree.setPid("0");
            tree.setId("4");
            tree.setName("导览管理");
            data.add(tree);
    
            tree = new Tree();
            tree.setId("5");
            tree.setPid("4");
            tree.setName("POI管理");
            data.add(tree);
    
    
            MenuTree menuTree = new MenuTree();
            List<Object> list = menuTree.menuList(data);
    
            System.out.println(JSONArray.toJSON(list));
    
        }
    
    
    }
    
    
    /**
     *
     * 递归类
     */
    class MenuTree {
    
        public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();
        public List<Tree> menuCommon;
        public List<Object> list = new ArrayList<Object>();
    
        public List<Object> menuList(List<Tree> menu) {
    
            this.menuCommon = menu;
            for (Tree x : menu) {
    
                Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
                if (x.getPid() == "0") {
                    mapArr.put("id", x.getId());
                    mapArr.put("name", x.getName());
                    mapArr.put("pid", x.getPid());
                    mapArr.put("childList", menuChild(x.getId()));
                    list.add(mapArr);
                }
            }
    
    
            return list;
        }
    
        public List<?> menuChild(String id) {
            List<Object> lists = new ArrayList<Object>();
            for (Tree a : menuCommon) {
                Map<String, Object> childArray = new LinkedHashMap<String, Object>();
                if (a.getPid() == id) {
                    childArray.put("id", a.getId());
                    childArray.put("name", a.getName());
                    childArray.put("pid", a.getPid());
                    childArray.put("childList", menuChild(a.getId()));
                    lists.add(childArray);
                }
            }
    
            return lists;
        }
    
    }
    
    /**
     * 树实体类
     */
    class Tree {
    
        private String id;
        private String pid;
        private String name;
    
        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;
        }
    
        @Override
        public String toString() {
            return "Tree [id=" + id + ", pid=" + pid + ", name=" + name + "]";
        }
    
    }
    展开全文
  • Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
  • java递归生成树形结构菜单

    万次阅读 多人点赞 2019-01-04 16:59:01
    一、mysql,数据自行准备 CREATE TABLE `sys_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` bigint(20) DEFAULT NULL, `title` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `path` varchar(255)...
  • java根据过滤条件显示树形结构,其中包括所需要的jar包
  • 树形结构结点编码

    2018-07-31 11:05:45
    树形结构的结点从1开始,自上而下,自左而右按层序编码,编码是64进制数,用java语言实现。对存取在mysql数据库的树形结构应该有帮助。 对一棵树的结点进行编码的步骤如下: 首先,对根节点编码,调用TreeCodeSet....
  • Java 树形结构数据生成导出excel文件

    千次阅读 2021-02-25 14:58:28
    树形结构数据生成导出excel文件
  • 在项目开发过程中,需要对存在关联的数据库中的数据以树形结构在页面上进行展示,通过SQL语句难以进行处理,需要在程序的业务层进行处理。 1、数据 ① city_groups 说明: city_groups通过id 和 parent_id...
  • Java实现的,将树形层级结构的数据转换成表格,通过打点的方式向表格中插入数据,支持行头表格、列头表格、交叉表格三种形式
  • 项目开发中,几乎无法...前端处理树形结构,后端生成树形结构。 Entity实体层: 此处省略好几个实体字段。 /** * 孩子节点集合 */ private List<OrganizationVO> child = new ArrayList<Organiza...
  • 一、数据库父子结构数据设计  大部分采用 parentId的形式来存储父id,并且只存储父id,祖父Id不存储。也可以添加存储层级级别或者层级关系等字段。 CREATE TABLE `t_resource` ( `id` varchar(255) NOT NULL ...
  • java递归生成树形结构数据,以查询省、市、区树形结构为例 service层代码 @Autowired private AreaDao dao; /** * 获取省、市、区树形结构数据 */ public void getTree(int id) { Area area = dao....
  • java生成树型结构

    2014-08-14 15:43:07
    java生成树型结构,代码调试过,可以直接运行
  • java+ztree 根据本地文件夹生成树形结构 近期根据需求实现了java+ztree根据本地文件夹生成树形结构在web前端中展示。有不足之处希望大家批评指正 //java bean public class Tree { private int id; private int ...
  • Java树形结构

    万次阅读 2017-12-23 20:00:30
    mysql取结构,java树形结构,递归
  • java 生成树形文件目录

    热门讨论 2011-11-07 17:25:41
    使用java程序写作一个像windows目录结构一样的目录。原创
  • java解析xml动态生成树形菜单结构

    热门讨论 2009-12-04 16:17:15
    java解析xml动态生成树形菜单结构 可以满足无限层的树形菜单,该工程的所有代码,都有详细的实例。 以及js控制树形菜单的伸展和收缩,以及全选
  • 根据文件列表构建树形结构的父子关系 代码生成结果: {id=1, parentId=0, children=[{id=4, parentId=1, children=[{id=7, parentId=4, children=[], name=节点7, level =2}, {id=8, parentId=4, children=[], name=...
  • Java 树形菜单 源码
  • 1 1-1 1-1-1 1-2 1-2-1
  • 主要介绍了java实现构造无限层级树形菜单,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java之TreeUtils生成一切对象树形结构

    千次阅读 2020-04-02 14:24:00
      项目中经常会遇到各种需要以树形结构展示的功能,比较常见的,如菜单树,分类树,部门树等等,如果为每种类型都遍历递归生成树形结构返回给前端,显得有些冗余且麻烦,并且其实逻辑都是一致的,只是遍历的对象...
  • * @Description: 转化List为树形结构 */ public class ListToTreeUtil { public static void main(String[] args) { List<TestMode> list = new ArrayList(); TestMode testMode1 = new TestMode(); test...
  • 将Dir.class放在任意需要遍历的文件目录,直接命令窗口运行java Dir生成Dir.txt文件
  • 现在有一个数据,需要你渲染出对应的列表出来: var data = [ {"id":1}, {"id":2}, {"id":3}, {"id":4}, ]; var str="<ul>";...data.forEach(function(v,i){ str+="<li><span>"+v.id+"</span></li>" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,354
精华内容 12,541
关键字:

java生成树形结构表

java 订阅