之前对于树状结构的处理没什么困难,但是最近的一个需求就很麻烦。其实遍历出树状结构并不是什么困难的事情,但是这个需求需要从底层节点统计数量,然后向上修改所有的父级结构。
最难的地方就是这个地方,可能有的子节点大部分是最后一级,但是平级可能还会有多层数据。之前试过用递归结构实现。但是容易造成死锁,原因就是在向上修改数据时平级的子节点也在
向上修改,就会造成死锁。这个需求搁置了很久,一直没有什么好办法。
直到前几天浏览文章时突然看到了,stream流的排序功能,突然思如泉涌。排序算法可以自定义还能支持多层排序,一步一步梳理完成。
我的思路是这样的,先拿到所有的二级结构,因为二级结构需要做最后的数据汇总,然后遍历出所有的二级结构树,这里可能数据库的设计师不一致的。但是,思路可以通用,这边我这个数
据里面保存了一个节点路径,
先使用条件限定查找范围,因为字符串的匹配可能不精确。通过二级节点搜索包含节点id的路径,用list集合包装起来。这样每个二级节点就是一个单独的树,再做处理就方便多了。
如果没有好的条件可以快速定位节点,建议使用递归,通过关联关系遍历获取数据。建议存入list集合,因为只在后台计算的话逆向遍历树结构很麻烦。这是一个树结构的实体