精华内容
下载资源
问答
  • 记录一种生成树结构的算法。 代码如下: public List<OrganizationVo> getStateTree() { List<OrganizationVo> orgs = organizationMapper.getStateOrg(); //组织数据转换为已组织ID为key的...

    常规的树形结构生成通常使用递归的方式进行,以深度遍历的方式不断将子节点追加到父节点上,在效率上并不可观。记录一种生成树形结构的算法。

    代码如下:

       public List<OrganizationVo> getStateTree() {
    
            List<OrganizationVo> orgs = organizationMapper.getStateOrg();
            //将组织数据转换为已组织ID为key的Map
            Map<String, OrganizationVo> nodeMap = orgs.stream().
                    collect(Collectors.toMap(OrganizationVo::getId, Function.identity()));
    
            //根节点容器;
            Set<String> parentSet=new HashSet<>();
            nodeMap.forEach((id, node) -> {
                //从nodeMap中寻找父节点
                String parentId = node.getParentId();
                OrganizationVo parent = nodeMap.get(parentId);
                if (parent == null) {
                    //如果当前节点没有父节点(认为其是父节点),将其存入parentSet
                    parentSet.add(id);
                } else {
                    //否则,将当前节点存入父节点,父节点回归nodeMap
                    if (parent.getChildren() == null) {
                        List<OrganizationVo> list = new ArrayList<>();
                        parent.setChildren(list);
                    }
                    parent.getChildren().add(node);
                    nodeMap.put(parentId, parent);
                }
            });
    
            //遍历parentSet 从nodeMap中取出树结构
            List<OrganizationVo> rs=new ArrayList<>();
            parentSet.forEach(id->{
                OrganizationVo node=nodeMap.get(id);
                if(node!=null){
                    rs.add(node);
                }
            });
            return rs;
        }

    该算法将一组树形结构的对象取出在一个map中,利用HashMap查询快的优势,缩减处理时间。

    遍历Map,对,找出其中的根节点的标识记录在缓存区,对不是根节点的节点则寻找其父节点建立关联。

    最后从缓存区取出根节点标识,从map中找到对应的根节点,即可获取一个树或树林。

    展开全文
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
  • java 面试题 总结

    2009-09-16 08:45:34
    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
  • java范例开发大全

    2013-03-08 20:06:54
    实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 ...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例18 Java中的递归 31  实例19 男生女生各多少人 32  实例20 求水仙花数 34  实例21 求任意一个正数的阶乘 35  实例22 求n的n次方 35  实例23 利用for循环输出几何图形 36  实例24 杨辉三角 ...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例18 Java中的递归 31  实例19 男生女生各多少人 32  实例20 求水仙花数 34  实例21 求任意一个正数的阶乘 35  实例22 求n的n次方 35  实例23 利用for循环输出几何图形 36  实例24 杨辉三角 38  ...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 ...
  • 超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39...
  • 25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
  • DWR 自动DOM、DOM4J、JDOM和XOM转换成DOM,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...
  • PLSQLDeveloper下载

    2012-05-04 11:30:27
    因为PL/SQL允许混合SQL申明和过程结构,因此可以在申明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL申明,没有PL/SQL,甲骨文需要就每次处理SQL申明,在网络环境中,这影响交通流量,而且增加...
  • freemarker总结

    2015-01-04 14:22:05
    这些指令显然是分支指令,作用类似于Java的switch语句,switch指令的语法结构如下: <#case refValue>... <#case refValue>... <#default>... 3、 list, break指令 list指令是一个迭代输出指令,用于迭代输出...
  • C++ B-tree :基于B数据结构,实现命令内存容器的模板库。 Colony:无序的”bag“型容器,在高度修改的情况下,其性能优于标准容器。同时,无论插入还是擦除,其都能始终保持指向未擦除元素的永久指针。 dynamic...
  • 6.2.1 查看最近生成的SQL语句 149 6.2.2 查看相关执行计划 149 6.2.3 收集执行计划统计信息 151 6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 ...
  • 6.2.1 查看最近生成的SQL语句 149 6.2.2 查看相关执行计划 149 6.2.3 收集执行计划统计信息 151 6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 ...
  • [Oracle.11g权威指南(第2版)].谷长勇.扫描版.pdf

    千次下载 热门讨论 2013-06-23 21:16:09
    5.3.8 Oracle递归函数的使用 91 5.4 复杂SELECT语句的使用 91 5.4.1 集合操作 91 5.4.2 子查询 96 5.4.3 表连接 96 5.4.4 CASE语句的使用 99 5.4.5 强大的DECODE函数 101 5.5 DDL语句的使用 102 5.5.1 常用的数据...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

java将list递归生成树结构

java 订阅