Java实现递归

本文通过一个小示例展示了如何在Java中实现递归,详细解释了递归的概念和使用方法,帮助读者理解递归在编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java实现递归小demo

//Java实体Menu对象
public class Menu {
private Integer pid;
private String menuName;
private Integer parentId;
private Integer position;
private List<Menu> childMenu;//自己的子集合

public Integer getPid() {
return pid;
}

public void setPid(Integer pid) {
this.pid = pid;
}

public String getMenuName() {
return menuName;
}

public void setMenuName(String menuName) {
this.menuName = menuName;
}

public Integer getParentId() {
return parentId;
}

public void setParentId(Integer parentId) {
this.parentId = parentId;
}

public Integer getPosition() {
return position;
}

public void setPosition(Integer position) {
this.position = position;
}

public List<Menu> getChildMenu() {
return childMenu;
}

public void setChildMenu(List<Menu> childMenu) {
this.childMenu = childMenu;
}

public Menu(Integer pid, String menuName, Integer parentId, Integer position) {
super();
this.pid = pid;
this.menuName = menuName;
this.parentId = parentId;
this.position = position;
}

public Menu() {
super();
}
//main方法创建集合代表数据库查出来的数据
public static void main(String[] args) {
List<Menu> treeMenu=new ArrayList<Menu>();

List<Menu> list=new ArrayList<Menu>();
Menu menu1=new Menu(1, "父级1", 0, 1);
Menu menu2=new Menu(2, "父级2", 0, 2);
Menu menu1_1=new Menu(3, "子级1_1", 1, 1);
Menu menu1_2=new Menu(4, "子级1_2", 1, 2);
Menu menu1_2_1=new Menu(5, "子级1_2_1", 4, 2);
list.add(menu1);
list.add(menu2);
list.add(menu1_1);
list.add(menu1_2);
list.add(menu1_2_1);

List<Menu> listTree=buildTree(list,0);
String trssJson=JSON.toJSONString(listTree);
System.out.println(trssJson);
//现在的集合是平面结构
}

//递归调用  注意参数
//@Param List<Menu> list  集合里的所有元素
//@Param int Id  是第一层对象的猪ID
public static List<Menu> buildTree(List<Menu> list,int Id){
List<Menu> menus=new ArrayList<Menu>();
      for (Menu menu : list) {  
          int pId= menu.getPId();//对象的主ID
          int parentId = menu.getParentId();//对象的父ID
          if (parentId == Id) {  
              List<Menu> menuLists = buildTree(list, pId);  
              menu.setChildMenu(menuLists);
              menus.add(menu);  
          }  
      }  
return menus;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aloneii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值