博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
阅读量:6835 次
发布时间:2019-06-26

本文共 1674 字,大约阅读时间需要 5 分钟。

树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示

 

一、业务原型:公司的组织结构、传销关系网

 

二、数据库模型

    很简单,创建 id 与 pid 关系即可。(pid:parent_id)

 

三、Java模型

    (我们把这张网撒在html的一张表里。其实用ul来展示会简单N多,自己思考为什么LZ会选择放在表里

    private class Table {

        private Long id; // 当前对象的id
        private int x; // 横坐标
        private int y; // 纵坐标
        private List<Table> tables; // 当前对象的下级集合

        public Table(Long id) {

            this.id = id; // 方便快速创建对象
        }
    }

    1、组装Java模型数据

        1)一次性从表里查出所有数据

        2)创建下面的Map  

            // pid 与 List<id> 上级ID与下级对象的对应关系

            Map<Long, List<Table>> psMap = new HashMap<>(); // 简单,不详细说明了

        3)创建顶级节点

            用顶级对象的ID new 一个Table,然后根据ID从上面的 psMap 取出它的下级给这个 Table 的 tables。

        4)递归完成所有子级节点

            循环Table对象的tables集合,重复上面一个步骤即可 

        5)计算每个Table对象的横(x)纵(y)坐标

            这里再创建一个对象

                private class Max {

                    private int x = 1; // 表的行 
                    private int y = 1; // 列
                }

// 计算纵坐标     private void countY(List
tables, int y, Max max) { if (tables != null) for (Table table : tables) { table.y = y; countY(table.tables, y + 1, max); if (y > max.y) max.y = y; } } // 计算横坐标 private void countX(List
tables, int x, Max max) { if (tables != null) for (Table table : tables) { table.x = max.x; if (table.tables != null) { max.x++; } countX(table.tables, max.x, max); } else max.x = x + 1; }

 

    2、创建二维数组,对应html页面中要展示的表

        T[][] ts = new T[max.x][max.y]; // T对应数据库表里的对象 

        上面的Java模型已经将每个对象的横(x)纵(y)坐标都算出来了,填充到这个二维数组即可

 

四、html页面展示

    1、根据前面的Max对象画一个表格,标注坐标

    2、用上面的二维数组填充表格

 

五、表格画好,接下来你可以不折手段了(这就是我不用ul的原因)

    1、统计每行每列的数据

    2、设置各种乱八七糟的样式

转载于:https://www.cnblogs.com/liaolongjun/p/5925451.html

你可能感兴趣的文章
2016年俄罗斯M2M市场达100亿俄罗斯卢布
查看>>
AI民主化:你愿意与Cortana共享绝密隐私吗?
查看>>
零售连锁企业CRM可以实现什么?
查看>>
说说CORS与jsonp
查看>>
Vue组件间通信
查看>>
webpack笔记
查看>>
最最最常用的十大ES6特性总结
查看>>
leetcode.最小栈问题
查看>>
js实现可执行的字符串计算
查看>>
IPFS基本使用
查看>>
玩转Go语言之闭包
查看>>
iOS 控制器的实例 的block循环引用
查看>>
用委托者模式实现的多类型Adapter
查看>>
大数据技术于应用 可视化图表的开发应用
查看>>
说说MySQL索引相关
查看>>
小猿圈Java学习之程序员需要注意的5项守则
查看>>
CentOS 6.5安装Redis-2.8.23
查看>>
Django模板和变量的使用
查看>>
eyoucms上传不了logo,重试总是失败
查看>>
确认下眼神,这是你需要的MES软件吗?
查看>>