Java4层级联怎么做_[Java教程]通过递归算法完成树的级联勾选的一般思路

[Java教程]通过递归算法完成树的级联勾选的一般思路

0 2016-09-14 19:00:08

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

在某个项目中,发现当tree上加上checkbox后,初始化该树时会特别慢。现场树上的节点最深有三层,节点个数总和有200多个。经排查,为该tree的参数中开启了级联勾选的参数,导致初始化该树时每初始化一个节点便进行了一次级联判断,如此效率过低导致。

现在将级联勾选去除后,涉及到如下几个问题需要解决:

初始化时,需要在前端或者后端完成级联勾选逻辑。手动勾选树上节点后,需要进行级联判断。

点击父节点时,子节点需要全部选中。

点击子节点时,需要判断父节点以及父组节点是否均需选中。

2.初始化时的后台级联选择算法

在树的数据初始化从后端读取时,我们可以首先获取到各子节点的选中状态,全部获取后,对构造出来的树结构进行整体判断是否进行父节点的勾选。其递归算法大致如下:

bc91bb04e6e9c61e24c974e4440db8f2.gif

3.初始化后前端的级联选择算法(只讨论勾选)

树有两种状态,一种是勾选,一种是去勾选。这里仅仅只考虑勾选的过程。去勾选过程的算法与勾选算法一样。

当树初始化完成后,勾选树上任意节点时,需要完成如下两个级联判断:

a.如果勾选的为父节点,其所有子节点均需被勾选上,并且其父节点也要做级联判断。

b.如果勾选的为普通子节点,其父节点要做级联判断。

统一起来就是,需要做两个级联算法,分别是向上方向判断,和向下方向判断:

bc91bb04e6e9c61e24c974e4440db8f2.gif

3.1针对父节点的级联算法

bc91bb04e6e9c61e24c974e4440db8f2.gif

3.2针对子节点的级联判断

bc91bb04e6e9c61e24c974e4440db8f2.gif

4.注意

递归算法中,递归层级(level)参数是个非常重要的参数,在控制操作逻辑上非常有用。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

本文网址:http://www.shaoqun.com/a/250657.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值