java 实现递归实现tree
package app.util; import java.util.ArrayList;
import java.util.List; import com.alibaba.fastjson.JSON; 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 parentId,String menuName, Integer pid, Integer position) {
super();
this.parentId = parentId;
this.menuName = menuName;
this.pid = pid;
this.position = position;
} public Menu() {
super();
} public static void main(String[] args) { List<Menu> list=new ArrayList<Menu>();
Menu menu1=new Menu(, "父级1", , );
Menu menu2=new Menu(, "父级2", , );
Menu menu1_1=new Menu(, "子级1_1", , );
Menu menu1_2=new Menu(, "子级1_2", , );
Menu menu1_2_1=new Menu(, "子级1_2_1", , );
Menu menu1_2_2=new Menu(, "子级1_2_2", , );
list.add(menu1);
list.add(menu2);
list.add(menu1_1);
list.add(menu1_2);
list.add(menu1_2_1);
list.add(menu1_2_2); List<Menu> listTree=buildTree(list,); String trssJson=JSON.toJSONString(listTree);
System.out.println(trssJson); } public static List<Menu> buildTree(List<Menu> list,int pid){
List<Menu> menus=new ArrayList<Menu>();
for (Menu menu : list) { int parentId = menu.getPid();
int menuId= menu.getParentId();
if (pid == parentId) {
List<Menu> menuLists = buildTree(list, menuId); menu.setChildMenu(menuLists);
menus.add(menu);
}
} return menus;
}
}
成型
[
{
"childMenu": [
{
"childMenu": [ ],
"menuName": "子级1_1",
"parentId": ,
"pid": ,
"position":
},
{
"childMenu": [
{
"childMenu": [ ],
"menuName": "子级1_2_1",
"parentId": ,
"pid": ,
"position":
}
],
"menuName": "子级1_2",
"parentId": ,
"pid": ,
"position":
}
],
"menuName": "父级1",
"parentId": ,
"pid": ,
"position":
},
{
"childMenu": [
{
"childMenu": [ ],
"menuName": "子级1_2_2",
"parentId": ,
"pid": ,
"position":
}
],
"menuName": "父级2",
"parentId": ,
"pid": ,
"position":
}
]
java 实现递归实现tree的更多相关文章
- java 实现递归实现tree(2)
import com.google.common.collect.Lists; import org.springframework.cglib.beans.BeanCopier; import ja ...
- 关于java的递归写法,经典的Fibonacci数的问题
经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...
- java 中递归的实现 以及利用递归方法实现汉诺塔
今天说下java语言中比较常见的一种方法,递归方法. 递归的定义 简单来说递归的方法就是"自己调用自己",通过递归方法往往可以将一个大问题简单化,最终压缩到一个易于处理的程度.对于 ...
- Java 之递归删除目录
Java 之递归删除目录 一.思想 必须从最里层的文件开始删除,使用递归删除. 二.源代码:RecursiveDeleteDirectory.java package cn.com.zfc.day01 ...
- Java 之递归遍历目录
Java 之递归遍历目录 一.内容 输出指定目录(文件夹)下的所有文件(包括目录)的绝对路径 二.源代码:RecursiveListDirectory.java package cn.com.zfc. ...
- Java实现递归将嵌套Map里的字段名由驼峰转为下划线
摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...
- Java面向对象-递归
Java面向对象-递归 递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己: 我们给出一个案例,求阶乘 1*2*3*...*(n-1)*n 我们用非递归和递归方式分别实现下, ...
- java方法---递归
java方法递归 1.什么是递归 就是自己调用自己: 2.递归结构的两个部分 递归头:什么时候不调用自身方法.如果仅有头,将陷入死循环.递归体:什么时候需要调用自身方法.
- JAVA二叉树递归构造、二叉树普通遍历及递归遍历
二叉树类: package com.antis.tree; public class BinaryTree { int data; //根节点数据 BinaryTree left; //左子树 Bin ...
随机推荐
- python实现ssh远程登录
python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...
- .Net Core 编码规范
.Net Core 编码规范 标签: 未分类 概述 规范制定原则 方便代码的交流和维护. 不影响编码的效率,不与大众习惯冲突. 使代码更美观.阅读更方便. 使代码的逻辑更清晰.更易于理解. 术语定义 ...
- C# 利用反射动态加载dll
笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...
- ASP.NET Core基础1:应用启动流程
先看下ASP.NET Core的启动代码,如下图: 通过以上代码,我们可以初步得出以下结论: 所有的ASP.NET Core程序本质上也是一个控制台程序,使用Program的Main方法作为程序的入口 ...
- webpack入门教程--3
webpack打包还可以使用配置文件,我们先创建一个叫做webpack.config.js的文件.这里需要注意一下,这个JS文件的名字不是我们胡乱写的,也是不能更改的,因为webpack 命令执行后, ...
- 博弈论进阶之Every-SG
Every-SG 给定一张无向图,上面有一些棋子,两个顶尖聪明的人在做游戏,每人每次必须将可以移动的棋子进行移动,不能移动的人输 博弈分析 题目中的要求实际是"不论前面输与否,只要最后一个棋 ...
- C# 用户控件之温度计
本文以一个用户控件[User Control]实现温度计的小例子,简述用户控件的相关知识,以供学习分享使用,如有不足之处,还请指正. 概述 一般而言,用户控件[User Control],是在Visu ...
- 基础环境系列:PHP7.3.0并连接pache/IIS和MySQL
版本: php7.3.0 MySQL8.0.12 Apache2.4 IIS8 一.下载PHP 1.下载php3.7 PHP版本:php7.3(7.3.0) 下载地址:https://windows ...
- JAVA 递归实现从n个数中选取m个数的所有组合
这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...
- Codechef Bear and Clique Distances
题目:Bear and Clique Distances 描述:共有N个点,前1—K个点任意两点之间有一条无向边,边的权值为X,再任意给M条边(u,v,w)(不重复),求任意一点到其余各点的最短路. ...