java建立父子节点关系_一种定义父子节点关系的方法

先说下场景:手头有一个web项目,因为业务需要,需要在父级节点下增加子节点,项目本身比较复杂,经过考虑,在不增加字段的情况下,做较小代码改动的实现方法如下。

1、项目中目前父节点存储生长方向为正向,并且已经存储了大量的数据

1,2,3,4,5....

2、单个父节点id下的子节点个数不是特别多,允许子节点最大个数为999个,所有的子节点childid定义为:

-(id*1000)+1

-(id*1000)+2

...(id*1000)+999

即父节点

1 对应的子节点为-999,-998,-997,-1等

2 对应的子节点为-1999,-1998,-1997...,-1001

3、通过子节点child查父节点id方法为

id=(Math.abs(childid) - Math.abs(childid) % 1000) / 1000 + 1

-998的父节点即为:(998-998)/1000+1=1

-1997的父节点即为:(1997-997)/1000+1=2

4、查找指定父节点id的所有子节点范围为

{-id*1000+1,-id*1000+999}

1的子节点范围为{-999,-1}

2的子节点范围为{-1999,-1001}

通过以上的方式,即可不影响父节点id的向上生长,同时也能保证子节点,父节点区分(只需要在现有方法内根据正负值做逻辑处理即可)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值