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的更多相关文章

  1. java 实现递归实现tree(2)

    import com.google.common.collect.Lists; import org.springframework.cglib.beans.BeanCopier; import ja ...

  2. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  3. java 中递归的实现 以及利用递归方法实现汉诺塔

    今天说下java语言中比较常见的一种方法,递归方法. 递归的定义 简单来说递归的方法就是"自己调用自己",通过递归方法往往可以将一个大问题简单化,最终压缩到一个易于处理的程度.对于 ...

  4. Java 之递归删除目录

    Java 之递归删除目录 一.思想 必须从最里层的文件开始删除,使用递归删除. 二.源代码:RecursiveDeleteDirectory.java package cn.com.zfc.day01 ...

  5. Java 之递归遍历目录

    Java 之递归遍历目录 一.内容 输出指定目录(文件夹)下的所有文件(包括目录)的绝对路径 二.源代码:RecursiveListDirectory.java package cn.com.zfc. ...

  6. Java实现递归将嵌套Map里的字段名由驼峰转为下划线

    摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...

  7. Java面向对象-递归

    Java面向对象-递归 递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己: 我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 我们用非递归和递归方式分别实现下, ...

  8. java方法---递归

    java方法递归 1.什么是递归 就是自己调用自己: 2.递归结构的两个部分 递归头:什么时候不调用自身方法.如果仅有头,将陷入死循环.递归体:什么时候需要调用自身方法.

  9. JAVA二叉树递归构造、二叉树普通遍历及递归遍历

    二叉树类: package com.antis.tree; public class BinaryTree { int data; //根节点数据 BinaryTree left; //左子树 Bin ...

随机推荐

  1. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——BarcodeView控件的使用方式,.Net移动开发

    BarcodeView控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个BarcodeView控件到窗体界面 ...

  2. 【记录一次坑经历】axios使用x-www-form-urlencoded 服务器报400(错误的请求。 )(后端.Net MVC5 WebApi OAuth,前端Electron-Vue)

    首先放上源码 electron-vue axios 注册 import Vue from 'vue' import axios from 'axios'   axios.defaults.baseUR ...

  3. arcgis10.0的ArcGIS Services Directory显示401,需要身份验证,访问被拒绝,rest/services需要输入用户名和密码

    大家好! 这个错误我也不想说什么,主要是应公司开发需求,从自己的arcgis10.2的版本改为arcgis10.0的版本,装完之后遇到一个错误,老是显示访问被拒绝,我也是找了很多的方式,没有在网上找到 ...

  4. PHP中使用 fsockopen curl 模拟异步处理

    PHP它最大缺点就是无法实现多线程管理,其程序的执行都是从头到尾,按照逻辑一路执行下来,不可能出现分支,这一点是限制php在主流程序语言中往更高级的语言发展的原因之一. 在PHP中我们有的时候其实希望 ...

  5. 零基础学Python--------第8章 模块

    第8章 模块 8.1 模块概述 模块的英文是Modules,可以认为是一盒(箱)主题积木,通过它可以拼出某一个主题的东西.这与第6章介绍的函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数 ...

  6. Vmware workstation V2V

        错误提示     检查虚拟机文件是否有快照,用WORKSTATION打开虚拟机后删除所有快照再使用converter导入         检查VMx文件中声明的vmdk路径是否与文件实际路径相 ...

  7. docker 学习资料收集

    Docker中文网 http://www.docker.org.cn/book/ docker镜像怎么迁移到其他的服务器 http://www.talkwithtrend.com/Question/1 ...

  8. C++ 虹软人脸识别 ArcFace 2.0 Demo

    环境配置: 开发环境:Win10 + VS 2013 SDK版本:ArcFace v2.0 OpenCV版本:2.4.9 平台配置: x64.x86下Release.Debug SDK 下载地址:戳这 ...

  9. java设计模式——适配器模式 Java源代码

    前言:适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作.通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一 ...

  10. Typora 快捷键

    今天学习了一下这个工具.很轻便,很好用的. 无序列表:输入-之后输入空格 有序列表:输入数字+“.”之后输入空格 任务列表:-[空格]空格 文字 标题:ctrl+数字 表格:ctrl+t 生成目录:[ ...