当前位置:   article > 正文

递归算法简单实现_请用递归编程实现。

请用递归编程实现。

创建于2021年12月15日
作者:想想

递归算法简单实现

前言

平常开发中,经常会碰到一些包含数据层级结构的数据在表中。我们需要将这样的数据组装成带有层级的 json 格式。我个人认为简单的数据,如果不涉及数据加工的话,递归算法完全可以处理,现在我们从搭建数据到加工最后返回效果来展示递归算法。

1、准备数据

id(主键)name(姓名)age(年纪)parentId(父级ID)
1老明60-1
2大明361
3大红351
4小明122

我们自己模拟了一张这样的表,最终的数据结构应该是这样的:

在这里插入图片描述

但是我们在程序里应该如何操作呢?请跟着我的脚步一步一步来

2、创建实体类

为了减少代码量,我这里使用了 lombok ,如果没有这个环境的同学,去掉@Data注解,手动生成 Geting、Setting

@Data
public class People {

    private int id;
    private String name;
    private int age;
    private int parentId;
    private List<People> people;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、获取数据

这里我们就简单写个方法set进对象里

public List<People> getData(){
		List<People> data = new ArrayList<>();
		People people = new People();
		people.setId(1);
		people.setName("老明");
		people.setAge(60);
		people.setParentId(-1);
		data.add(people);
//  ....(此处胜率)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

通过调用 getData()方法获取到上面的数据

4、递归算法组装数据

兄弟们~ 重头戏来了,创建递归方法

	public List<People> compositeTree(List<People> data,int parentId){
		List<People> dist = new ArrayList<>();
		for (People p : data) {
			if (p.getParentId()==parentId){
        // 要用父级去setPeople,这样子父都会在对象中存在
				p.setPeople(compositeTree(data, p.getId()));
				dist.add(p);
			}
		}
		return dist;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

主方法调用

	public R<List<People>> test(){
    // 获取数据
		List<People> data = getData();
    // 递归组装数据
		List<People> people = compositeTree(data, -1);
		return R.data(people);
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后得到数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PKyrhOU2-1639562104824)(images/image-20211215175106130.png)]

好了到这我们的分享也结束了
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1020154
推荐阅读
相关标签