将list的当前层放到前一层的children里,例如list.size=5,0为最顶级,5放入4中,4放入3中.最终得到长度为1的list,children里套四层
需求:修改权限,跟前端妹子协商好参数,也是通过树形化传给后台
实现思路
@Override
public Boolean savePermission(PermissionTreeReq permissionTreeReq) {
log.info("savePermission.req permissionTreeReq={}", JSON.toJSONString(permissionTreeReq));
List<PermissionTreeResp> permissionRespList = new LinkedList<>();
List<PermissionTreeResp> permissionTreeList = permissionTreeReq.getPermissionTreeResps();
// 树转化成List
treeToList(permissionRespList, permissionTreeList);
log.info("treeToList={}",JSON.toJSONString(permissionRespList));
return Boolean.TRUE;
}
/**
* 数转换成List
* @param permissionRespList
* @param permissionTreeList
* @date: 2021/3/9 22:23
* @return: void
*/
private void treeToList(List<PermissionTreeResp> permissionRespList, List<PermissionTreeResp> permissionTreeList) {
for (PermissionTreeResp permissionTreeResp : permissionTreeList) {
permissionRespList.add(permissionTreeResp);
if (CollectionUtil.isNotEmpty(permissionTreeResp.getChildren())) {
treeToList(permissionRespList,permissionTreeResp.getChildren());
}
}
}
感谢大家看到最后,如文章有不足,欢迎大家在评论区支持,给予意见。如果觉得我的文章对你有帮助,那就给我一个赞同吧!
有父子关系么?
代码:
public static void main(String[] args) {
List<Item> list = Lists.newArrayList(
new Item(1),
new Item(2),
new Item(3),
new Item(4),
new Item(5));
for (int i = 0; i < list.size() - 1; i++) {
list.get(i).setChild(list.get(i + 1));
}
System.out.println(list.get(0));
}
结果:
Item(id=1, child=Item(id=2, child=Item(id=3, child=Item(id=4, child=Item(id=5, child=null)))))