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 ...
随机推荐
- 基于React-Native0.55.4的语音识别项目全栈方案
移动端的API能力验证方案与PC端不一样!不一样!!不一样!!! 即使需要使用的API都存在,也不一定能用,这一点和PC端是有很大区别的,国内的手机系统虽然都是基于Android,但几乎都会经过各大厂 ...
- win2008R2环境配置
1)下载系统 [https://msdn.itellyou.cn/] 选择带sp1的,这个系统是08R2中较为完善的一种 2)安装之后首先不要激活和安装.net framework 先安装ii ...
- C#程序员知识体系
[https://blog.csdn.net/zj735539703/article/details/50409476] 基础部分 C# 基础语法 OOP的概念,面向对象的理解 继承 封装 多态 AS ...
- [ASP.NET] 如何利用Javascript分割檔案上傳至後端合併
最近研究了一下如何利用javascript進行檔案分割上傳並且透過後端.特地記錄一下相關的用法 先寫限制跟本篇的一些陷阱 1.就是瀏覽器的支援了 因為本篇有用到blob跟webworker 在ie中需 ...
- 【Nginx】使用nginx反向代理IIS实现80端口的解放
下载版本: 官网地址:http://nginx.org/en/download.html 我使用了稳定版本. 下载完成之后进行目录解压,解压之后大概就是这个样子: 网上很多人写这些了想了解概念的百度一 ...
- ASP.NET Web API决跨域问题
记录最近一次的项目开发中遇到的问题和解决方式.在给移动端开放数据接口的时候,移动端开放人员反映部署到测试环境的接口调用访问出现了问题,但是在单独进行访问是可以正常的.那么,问题就来了. 根据查询园子里 ...
- SpringBoot 之Actuator.
一.Actuator 介绍 Actuator 是 SpringBoot 项目中一个非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api 请求来监管.审计.收集应用的运行情况. ...
- 原生js获取元素非行内样式属性的方法
获取当前对象的样式DOM标准中的全局方法 getComputedStyle(obj).width (获取元素的宽度),但在非标准IE浏览器(IE8)以下有兼容问题IE8以下要这样写 obj.curre ...
- 解决TOC与目录导航冲突问题
TOC是指markdown的TOC; 目录导航是指博客园中各个博主提供的各种目录导航. 现在改换markdown写博文了,我喜欢使用TOC作为目录,让大家了解博文的内容,也喜欢用"目录导航& ...
- Linux下创建桌面快捷方式
建立一个文本文件,文件名必须以.desktop结尾,.desktop前面的作为快捷方式的名称 添加如下内容 [Desktop Entry]Encoding=UTF-8Name=PostmanExec= ...