需求: 从数据库中查找出所有菜单项,然后根据父子关系进行拼接封装形成一个菜单树。
效果图:
思路
- 实体类必备字段:id,parent_id,List<实体类> children
- 从数据库中根据条件(例如公司id)查找出该条件下所有的菜单项,形成一个List。
- 遍历这个List转为一个Map,其中Map的key为该菜单项的唯一标示(通常是id),value为电房实体类。
- 先创建一个返回给前端的集合Set,然后对这个Map进行遍历(我用的是Map的values()方法)
- 遍历Map的values:如果parent_id不存在,那就直接丢进Set里面;如果parent_id存在,那就从Map中根据如果parent_id获取父菜单项的实体类出来,然后调用父菜单项的addChildren方法把当前菜单项添加到父菜单项里面。
算法设计: