概要
父子节点匹配的的所有节点通常会设计存储在同一张数据表中,通过自连接操作找对孩子节点的父节点,那么这种操作在java中如何处理呢?
一种方式是使用多重循环匹配父节点的孩子节点,另一种方式是使用递归来对当前节点的孩子节点进行匹配,但是个人认为都不算是最佳的父子节点匹配处理方式。这里推荐一种时间复杂度更低的方式来对此场景进行处理,这里会使用使用单层for循环+Map集合进行遍历和匹配
表设计
以菜单表为例:这里想组装成三级菜单,id:菜单id,pid:父菜单id,通过pid与id的匹配来关联菜单层级,0代表顶层菜单
数据返回效果如下
[
{
"value": 1,
"label": "主页",
"pid": 0,
"children": [
{
"value": 2,
"label": "菜单1",
"pid": 1,
"children": [
{
"value": 4,
"label": "子项1",
"pid": 2
},
{