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. [React] 从零开始的react

    组件 1. 无状态组件 在React中,组件的名字必须用大写字母开头,而包含该组件定义的文件名也应该是大写字母(便于区分,也可以不是). 无状态组件是纯展示组件,仅仅只是用于数据的展示,只根据传入的p ...

  2. 一统江湖的大前端(7)React.js-从开发者到工程师

    目录 一. 前端打怪升级指南 1.1 我应该从哪个框架开始学? 1.2 一次转职 1.3 二次转职 1.4 转职-其他 二. 为什么你应该学习React 2.1 技术栈的延伸 2.2 组件化开发 2. ...

  3. Docker在Linux/Windows上运行NetCore文章系列

    Windows系列 因为Window很简单,VS提供界面化配置,所以只写了一篇文章 Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用 Linux( ...

  4. Echarts 数据视图 生成Excel的方法

    一.生成Excel,两大方向:1后台生成Excel 查询数据库,使用NOPI生成Excel.2前台js生成Excel三种方式1)jquery.table2excel.js --采用,优势:兼容IE和C ...

  5. 01-html介绍和head标签

    [转]01-html介绍和head标签 主要内容 web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 HTML规范 HTML结构详解 一.web标准 web准备介绍: w3c:万维网 ...

  6. Android为TV端助力 进制互相转换

    byte转换为16进制 public static String GetByte2Str(byte b) { byte[] buff = new byte[2]; buff[0] = mHex[(b ...

  7. 通过fromdata实现上传文件

    其实呢,文件上传的插件很多,可是现在做的东西要求尽量少用插件,所以就自己写了一下. 之前也用node写过对文件处理方面的东西,这次用php写着试一下. a.html文件 <!DOCTYPE ht ...

  8. Docker 创建 Confluence6.12.2 中文版

    目录 目录 1.介绍 1.1.什么是Confluence? 2.Confluence的官网在哪里? 3.如何下载安装? 4.对 Confluence 进行配置 4.1.设置 Confluence 4. ...

  9. cannot be run because the QueueReader subsystem failed to load

    前阵子一数据库服务器的事务日志开始暴增,当时使用下面脚本检查发现该数据库的log_reuse_wait_desc 一直处于REPLICATION状态, 也就是说在事务复制过程中,与发布相关的事务仍未传 ...

  10. 从0开始的Python学习001快速上手手册

    假设大家已经安装好python的环境了. Windows检查是否可以运行python脚本 Ctrl+R 输入 cmd 在命令行中输入python 如果出现下面结果,我们就可以开始python的学习了. ...