精华内容
下载资源
问答
  • java list转成树结构

    2020-10-27 09:24:04
    import com.alibaba.fastjson.JSON; import ... ... import java.util.ArrayList; import java.util.HashMap;...import java.util.List; import java.util.Map; public class TestUtil { public static.
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class TestUtil {
        public static JSONArray listToTree(JSONArray arr, String id, String pid, String child){
            JSONArray r = new JSONArray();
            JSONObject hash = new JSONObject();
            //将数组转为Object的形式,key为数组中的id
            for(int i=0;i<arr.size();i++){
                JSONObject json = (JSONObject) arr.get(i);
                hash.put(json.getString(id), json);
            }
            //遍历结果集
            for(int j=0;j<arr.size();j++){
                //单条记录
                JSONObject aVal = (JSONObject) arr.get(j);
                //在hash中取出key为单条记录中pid的值
                JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
                //如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
                if(hashVP!=null){
                    //检查是否有child属性
                    if(hashVP.get(child)!=null){
                        JSONArray ch = (JSONArray) hashVP.get(child);
                        ch.add(aVal);
                        hashVP.put(child, ch);
                    }else{
                        JSONArray ch = new JSONArray();
                        ch.add(aVal);
                        hashVP.put(child, ch);
                    }
                }else{
                    r.add(aVal);
                }
            }
            return r;
        }
        public static void main(String[] args){
            List<Map<String,Object>> data = new ArrayList<>();
            Map<String,Object> map = new HashMap<>();
            map.put("id",1);
            map.put("pid",0);
            map.put("name","甘肃省");
            data.add(map);
            Map<String,Object> map2 = new HashMap<>();
            map2.put("id",2);
            map2.put("pid",1);
            map2.put("name","天水市");
            data.add(map2);
            Map<String,Object> map3 = new HashMap<>();
            map3.put("id",3);
            map3.put("pid",2);
            map3.put("name","秦州区");
            data.add(map3);
            Map<String,Object> map4 = new HashMap<>();
            map4.put("id",4);
            map4.put("pid",0);
            map4.put("name","北京市");
            data.add(map4);
            Map<String,Object> map5 = new HashMap<>();
            map5.put("id",5);
            map5.put("pid",4);
            map5.put("name","昌平区");
            data.add(map5);
            System.out.println(JSON.toJSONString(data));
            JSONArray result = listToTree(JSONArray.parseArray(JSON.toJSONString(data)),"id","pid","children");
            System.out.println(JSON.toJSONString(result));
        }
    }
    展开全文
  • https://blog.csdn.net/massivestars/article/details/53911620/
    展开全文
  • } //查询当前节点的子孙节点 public static void findMyChilder(Person my,List<Person> family){ List<Person> childrens=new ArrayList(); my.childrens=childrens; //查找当前节点的直属孩子 for (Person person...
    • 当我们需要从数据库中查出的数据放回至前端展示,而前端需要为树结构时,我们应该避免N+1查询,应该直接查出所有数据,再通过java代码基于内存的方式去将树创建好。

    具体代码 :
    案例中的集合分了层, 祖父节点, 父亲节点, 当前节点,而且每个层次的节点都有兄弟节点.

    public static void main(String[] args) {
    
            Person grandfather=new Person("0","1","grandfather");
            Person father=new Person("1","2","father");
            Person uncle=new Person("1","3","uncle");
            Person uncle2=new Person("1","4","uncle2");
            Person brother=new Person("2","5","brother");
            Person brother2=new Person("3","6","brother2");
            Person me=new Person("3","7","me");
    
            List<Person> family=new ArrayList<>();
            family.add(grandfather);
            family.add(father);
            family.add(uncle);
            family.add(uncle2);
            family.add(brother);
            family.add(brother2);
            family.add(me);
    
            Person person=listToTree(family);
        }
    
    
    
    //查询当前节点的子孙节点
        public static void findMyChilder(Person my,List<Person> family){
            List<Person> childrens=new ArrayList<>();
            my.childrens=childrens;
            //查找当前节点的直属孩子
            for (Person person:family){
                if(person.parentCode.equals(my.Code)){
                    my.childrens.add(person);
                }
            }
            //查找孩子的孩子
            if(my.childrens.size()>0){
                for (Person children:my.childrens){
                    findMyChilder(children,family);
                }
            }
        }
        static class Person{
            public  String parentCode;
            public  String  Code;
            public  String name;
            public  List<Person> childrens;
    
            public Person(String parentCode, String code, String name) {
                this.parentCode = parentCode;
                this.Code = code;
                this.name = name;
            }
    
            public Person() {
            }
    
            @Override
            public String toString() {
                return "Person{" +
                        "parentCode='" + parentCode + '\'' +
                        ", Code='" + Code + '\'' +
                        ", name='" + name + '\'' +
                        ", childrens=" + childrens +
                        '}';
            }
        }
    
    展开全文
  • 生成系统目录 之前是先获取到整体的集合对象,然后使用... /// 转换成树 /// </summary> public List<ProjectMenuViewModel> ToTree(List<ProjectMenuViewModel> source) { if (source == null)

    生成系统目录

    之前是先获取到整体的集合对象,然后使用递归的方式将信息进行整合。
    新方式,学习一下
    
    		/// <summary>
            /// 转换成树
            /// </summary>
            public List<ProjectMenuViewModel> ToTree(List<ProjectMenuViewModel> source)
            {
                if (source == null)
                {
                    return new List<ProjectMenuViewModel>();
                }
    
                //缺失父节点数据时,提升为一级节点
                foreach (var node in source)
                {
                    if (node.UpId > 0)
                    {
                        if (!source.Any(n => n.MenuId == node.UpId))
                        {
                            node.UpId = 0;
                        }
                    }
                }
    
                source = source.OrderBy(m => m.Order).ThenBy(m => m.Id).ToList();
    
                //所有父节点
                var currentLevel = source.Where(q => q.UpId == 0).ToList();
    
                while (true)
                {
                    //设置当前层子级
                    foreach (var temp in currentLevel)
                    {
                        temp.Children = source.Where(q => q.UpId == temp.MenuId).ToList();
                    }
    
                    //取当前层所有子级,没有表示树完成,退出。
                    currentLevel = currentLevel.SelectMany(q => q.Children).ToList();
                    if (currentLevel.Count == 0)
                    {
                        break;
                    }
                }
    
                return source.Where(q => q.UpId == 0).ToList();
            }
    
    展开全文
  • List集合转换成树结构

    2021-01-20 15:57:27
    //把评论List转成树结构返回给前端 List<CmsComments> buidTree(List<CmsComments> list,Long parentTop){ List<CmsComments> tree=new ArrayList<>(); for(CmsComments CmsComments:...
  • import com.alibaba.fastjson.JSON; import ... ... import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TestUtil { public static JSONAr
  • python将列表数据转换成树结构数据

    千次阅读 2020-12-09 16:52:15
    list数据成dict格式的树结构 测试数据: test_data = [ {'id': 1, 'parent_id': 0, 'name': '学校'}, {'id': 2, 'parent_id': 1, 'name': 'A校区'}, {'id': 3, 'parent_id': 1, 'name': 'B校区'}, {'id': 4,...
  • public static List<MenuTree> buildByRecursive(List<MenuTree> menuTrees) { List<MenuTree> trees = new ArrayList(); for (MenuTree menuTree : menuTrees) { //菜单级别为0,则是一级数据,根据实际情况...
  • /** * list结构转化为树形结构 */ public class Main { public static void main(String[] args) { List, Object>> data = new ArrayList(); Map, Object> map = new HashMap(); map.put("id", 1); map.put("pid",0...
  • list转换成为树结构

    2020-05-09 17:01:18
    DTO--有个childs的list字段,泛型为自己 package com.uindata.dto.ss; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax....
  • list原始数据 [ {name:"A一级菜单1",fid:"-1",id:"1"}, {name:"AA二级菜单1",fid:"1",id:"2"}, {name:"AAA三级菜单1",fid:"2",id:"3"}, {name:"AB二级菜单2",fid:"1",id:"4"}, {name:"B一级菜单2",fid:"-1",id:"5"},...
  • 实际上,我们也可以理解为如何将拥有父子关系的list转成树形结构,而这其中主要的方法就是递归! 1、实体对象: @Data public class Node { private Integer id; private String city; private Integer pid; ...
  • java list转成treenode、list转成tree

    千次阅读 2019-03-30 13:43:28
    TreeNode.java package com.example.demo.t1; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; ...import java.util.ArrayList;...import java.util.List; @Data public class TreeNode { ...
  • function toTree(list,pid = 0){ var newArray=[] list.map((e)=>{ if(e.pid===pid){ e.children=toTree(list,e.id); newArray.push(e); } }) return newArray; } var list=[ {...
  • js数组转成树

    2021-03-06 23:24:17
    面试题 解决方法 /** * 1.先根据parent_ind分组,没有parent_ind的也会生成key为undefined的一组,将作为第一...let insustry_list = [{ "parent_ind": "女装", "name": "连衣裙" }, { "name": "女装" }, { "parent_i
  • 目标: JS 将有父子关系的平行数组转换成树形数据 方法:双重遍历,一次遍历parentId,一次遍历id == parendId; 该方法应该能很容易被想到,实现起来也一步一步可以摸索出来; ...const oldData = [ ...
  • java list转树形结构

    2020-06-05 15:53:27
    由于项目需要,需要把list转为树形结构,一般list转为树形结构时,需要关心prentCode,及子节点对应的父节点,并且父节点对应的子节点应该放在哪一个属性。及节点的结构层次。 在实现前,先了解下lambda 方法引用获取...
  • list转tree,用于展示层级结构 部门类定义 import java.util.List; /** * 部门类(省略get set方法) **/ public class DepartmentVO { /** * 当前部门id */ private String deptId; /** * 父部门id */ ...
  • 将扁平化数组转成树 一般在一些导航菜单呀,树型空间呀,会用到树型的数据。但是后端可能直接给我们一些扁平化数组,让我们自己去处理。 模拟数据: const menu = [{ pid: -1, name: "购物车", id: 1, auth: ...
  • select id,sort,title from tbl_product_category where parent_id = ${parent_id} select> 常规写法 @Override public List<ProductCategoryVo> listWithTree() { List<ProductCategory> all = baseMapper....
  • List列表结构 转换成树形结构 /// <summary> /// 构造树形Json /// </summary> public static class TreeJson { /// <summary> /// 转换树Json /// <...
  • list转换成树形数据

    千次阅读 2016-11-28 22:07:38
    往往要将数据库中的菜单配置成树形结构展示到前台,这边提供一种二维树组树形(同事那边看来的,很好用),以供参考: 数据库 id,name,parent_id java对象: Java代码  1. private class TreeNode{  2...
  • list父子节点树json

    2018-05-31 09:51:12
    list父子节点树json,大家也可以结合我的博客查看,下载以后可以直接应用 博客地址为:https://blog.csdn.net/qq_25814003/article/details/80519421

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,483
精华内容 1,393
关键字:

list转成树