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 ...
随机推荐
- Elasticsearch修改network后启动失败
修改 /config/elasticsearch.yml(我的安装目录是:/var/www/elasticsearch-6.4.2/elasticsearch-6.4.2), network.host ...
- Redis面试点
redis的数据结构有那些 字符串 String 字典:Hash 列表:List 集合:set 有序集合:sortedSet 如果大量的key设置在同一时间过期,一般需要注意什么 大量的key过期 ...
- 折腾Java设计模式之策略模式
博客原文地址 简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式.简单理解就是一组算法,可以互换,再简单点策略就是封装算法. ...
- NET Core应用中使用缓存
NET Core应用中使用缓存 .NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓 ...
- Windows 更快捷方便的安装软件,命令提示符上安装 Chocolatey
在命令提示符上安装 Chocolatey @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-o ...
- laravel项目使用appnode部署linux系统到阿里云服务器流程记录(待补充)
使用 SSH 连接工具,如 PuTTY.XShell.SecureCRT 等,连接 Linux 服务器后(阿里云服务器命令行内直接输入appnode安装命令,版本:mysql选5.7.php选7.2) ...
- Win10解除网速限制让网速飞起来
Win10隐藏了20%的网速,下面叫你怎么释放它: 1.按Win+R调出运行,输入gpedit.msc点击确定; 2.点击windows设置,右击基于策略Qos,选择高级Qos设置: 3.勾选如图方框 ...
- LeetCode算法题-Poor Pigs(Java实现)
这是悦乐书的第235次更新,第248篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第102题(顺位题号是455).有1000个水桶,其中只有一个水桶含有毒药,其余的都没毒 ...
- Java 8 新特性:6-Optional类
(原) 先看看上面的说明: /** * A container object which may or may not contain a non-null value. * If a value i ...
- 【转】从源码分析Handler的postDelayed为什么可以延时?
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aliankg/article/details/70842494Thread/Hander/Loope ...