当前位置: 首页 > news >正文

网站建设的脑图规划培训网站开发需求说明书

网站建设的脑图规划,培训网站开发需求说明书,合肥瑶海区新楼盘在售,门户网站建设系统背景 在开发过程中经常需要把平铺的数据结构转为树形的数据结构,例如多级菜单、组织机构等。 实现方案有很多种。 1、可以使用递归查询,但是这样数据一多会导致频繁的多次查询数据库,产生很多额外的IO开销,总体的响应时间会比较…

背景

在开发过程中经常需要把平铺的数据结构转为树形的数据结构,例如多级菜单、组织机构等。

实现方案有很多种。

1、可以使用递归查询,但是这样数据一多会导致频繁的多次查询数据库,产生很多额外的IO开销,总体的响应时间会比较慢,一般不会这样做。

2、可以事先查询出来所有的数据,再进行递归的子节点查找,这是一个可行的方案,只需要查询一次数据库,之后的操作利用算法在内存操作,这样响应时间会有一个很大的提升。

3、这里要说的一种方案和第二种类似,只不过采用了google的guava包下的Multimap这种数据结构,利用它可以一个key对应多个值的特性。

方案实现

引入guava包

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>33.2.0-jre</version>
</dependency><!-- 这个包可以不要,这里我用来转json字符串打印出来有用到 -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>

树形VO

@Data
public class TreeVO {private List<TreeVO> children;private int id;private boolean leaf;private String menuName;private int parentId;
}

转树示例代码

public static void main(String[] args) {TreeVO v1 = new TreeVO();v1.setId(10L);v1.setParentId(0L);v1.setMenuName("第一级菜单");TreeVO  v2 = new TreeVO();v2.setId(11L);v2.setParentId(10L);v2.setMenuName("第二级菜单1");TreeVO v21 = new TreeVO();v21.setId(12L);v21.setParentId(10L);v21.setMenuName("第二级菜单2");TreeVO v3 = new TreeVO();v3.setId(21L);v3.setParentId(11L);v3.setMenuName("第三级菜单");Multimap<Long,TreeVO> multimap = ArrayListMultimap.create();multimap.put(v1.getParentId(),v1);multimap.put(v2.getParentId(),v2);multimap.put(v21.getParentId(),v21);multimap.put(v3.getParentId(),v3);Iterator<TreeVO> iterator = multimap.values().iterator();while (iterator.hasNext()) {TreeVOmenuNode = iterator.next();// 找直接后代 childrenCollection<TreeVO> children = multimap.get(menuNode.getId());if (children.isEmpty()) {menuNode.setLeaf(true);menuNode.setChildren(null);} else {menuNode.setChildren(children);}}System.out.println(JSON.toJSONString(multimap.get(0L),SerializerFeature.PrettyFormat));}

这里打印出来的结果是

[
    {
        "children":[
            {
                "children":[
                    {
                        "id":21,
                        "leaf":true,
                        "menuName":"第三级菜单",
                        "parentId":11
                    }
                ],
                "id":11,
                "leaf":false,
                "menuName":"第二级菜单1",
                "parentId":10
            },
            {
                "id":12,
                "leaf":true,
                "menuName":"第二级菜单2",
                "parentId":10
            }
        ],
        "id":10,
        "leaf":false,
        "menuName":"第一级菜单",
        "parentId":0
    }
]

http://www.yayakq.cn/news/34031/

相关文章:

  • 淘宝客做网站怎样推广北京鑫创网站建设
  • 网站建设中如何使用字体如何做个网站做cpa
  • 承德微网站建设网站设计大小
  • 用ul做的网站为何浮动不上去大连金州旅游景点有哪些
  • 建设企业网站就等于开展网络营销做网站的软件 知乎
  • 焦作市网站建设哪家好标书制作是干啥的
  • 黄埔区做网站6免费网站建站
  • 移动网站 用户体验重庆建设医院官方网站
  • 有哪些做婚礼平面设计的网站山东省工程建设招标信息网站
  • 网站怎么更新网站开发平台工具
  • 小说网站制作开源网站建设云创
  • 品牌网十大品牌排行榜衡水网站建设优化排名
  • 网站开发有几种焦作 做 网站
  • 网络宣传网站建设价格手机网站建设好吗
  • 网站开发文档总结wordpress标签加标题
  • 怎么注册网站挣流量sem 优化价格
  • 网站备案信息被工信部删除营销型网站建设专家
  • 阿里巴巴官方网站商丘的网络公司
  • 官网网站建设公司网络营销推广活动
  • 建设网站账号密码不区分大小写wordpress字體調整控制
  • 网站后台如何做wordpress打赏分享
  • 怎么在网站中添加百度商桥深圳网站建设评价
  • 云网站 制作手机膜+东莞网站建设
  • 系部网站建设中期检查总结做电影ppt模板下载网站
  • 公众号微网站建设认证广告公司经营范围有哪些内容
  • 怎么把统计代码加到网站烟台网络公司经营范围
  • 如何做高端网站苏州网站建设系统找哪家
  • 网站打开速度慢wordpress杭州网站定制开发
  • 最超值的网站建设长宁区科技网站建设
  • 微网站难做么佛山seo