Java递归算法遍历部门代码示例
作者:老瞿 发布时间:2021-08-03 20:59:20
标签:java,递归,遍历,部门树
递归是一个非常有用的知识点。写点实例帮助自己记忆
中间有过程代码
首先一个javapojo类
package com.qcf.po;
import java.util.HashSet;
import java.util.Set;
public class Depart {
private long id;
private String name;
private String destion;
//用户
Set<User> users=new HashSet<User>();
//子类部门
Set<Depart> departs=new HashSet<Depart>();
//父类部门
private Depart depart;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
public Set<Depart> getDeparts() {
return departs;
}
public void setDeparts(Set<Depart> departs) {
this.departs = departs;
}
public Depart getDepart() {
return depart;
}
public void setDepart(Depart depart) {
this.depart = depart;
}
public String getDestion() {
return destion;
}
public void setDestion(String destion) {
this.destion = destion;
}
}
测试代码:
package com.qcf.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.aspectj.weaver.patterns.ThisOrTargetAnnotationPointcut;
import com.qcf.po.Depart;
public class PreDepart {
/**
* 结构
* ┝开发部
* ┝开发一部
* ┝开发一组
* ┝开发二组
* ┝开发二部
* ┝开发三组
* ┝开发四组
* ┝销售部
* ┝销售一部
* ┝销售二部
*/
public static List<Depart> findDepartTopList(){
//顶级
Depart depart1=new Depart();
depart1.setName("开发部");
//二级
Depart depart1_1=new Depart();
depart1_1.setName("开发一部");
// *
Depart depart1_1_1=new Depart();
depart1_1_1.setName("开发一组");
Depart depart1_1_2=new Depart();
depart1_1_2.setName("开发二组");
Set<Depart> departs1_1=new HashSet<Depart>();
departs1_1.add(depart1_1_1);
departs1_1.add(depart1_1_2);
depart1_1.setDeparts(departs1_1);
Depart depart1_2=new Depart();
depart1_2.setName("开发二部");
Depart depart1_2_1=new Depart();
depart1_2_1.setName("开发一组");
Depart depart1_2_2=new Depart();
depart1_2_2.setName("开发二组");
Set<Depart> departs1_2=new HashSet<Depart>();
departs1_2.add(depart1_1_1);
departs1_2.add(depart1_1_2);
depart1_2.setDeparts(departs1_1);
Set<Depart> departs1=new HashSet<Depart>();
departs1.add(depart1_1);
departs1.add(depart1_2);
depart1.setDeparts(departs1);
//顶级
Depart depart2=new Depart();
depart2.setName("销售部");
//二级
Depart depart2_1=new Depart();
depart2_1.setName("销售一部");
Depart depart2_2=new Depart();
depart2_2.setName("销售二部");
Set<Depart> departs=new HashSet<Depart>();
departs.add(depart2_1);
departs.add(depart2_2);
depart2.setDeparts(departs);
List<Depart> list=new ArrayList<Depart>();
list.add(depart1);
list.add(depart2);
return list;
}
public static void main(String[] args) {
List<Depart> list=findDepartTopList();
// for (Depart depart : list) {
// getAllDepartName(depart);
// }
getAllDepartName_2(list,"=");
}
/**将所有的部门打印出来*/
public static void getAllDepartName(Depart depart){
System.out.println(depart.getName());
for (Depart chirden : depart.getDeparts()) {
getAllDepartName(chirden);
}
}
/**将所有的部门打印出来*/
public static void getAllDepartName_2(Collection<Depart> list,String pre){
for (Depart depart2 : list) {
System.out.println( pre +depart2.getName());
getAllDepartName_2(depart2.getDeparts()," "+pre);
}
}
}
总结
java递归算法实例分析
Java编程用栈来求解汉诺塔问题的代码实例(非递归)
Java中map遍历方式的选择问题详解
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
来源:http://www.cnblogs.com/quchengfeng/p/4155419.html


猜你喜欢
- 简介本次五子棋使用的是光标控制移动,通过按空格键(键值32)来落子,实现游戏的。我们额外用到的头文件有:#include<getch.
- 前言Graalvm通过静态分析提前编译来为Java应用程序构建高度优化的本机可执行文件,这就需要在编译时就知道所有的程序类型,而java中的
- <customErrors>节点用于定义一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中
- 前言在之前的文章我们复习了 ViewGroup 的测量与布局,那么我们这一篇效果就可以在之前的基础上实现一个灵活的九宫格布局。那么一个九宫格
- 可能也有其他方法,比如用 WGet 等等,但是 推荐用 PowerShell ,为什么呢,因为 PowerShell 太强大呗PowerSh
- 方法一:使用AnimatedGif库Nuget安装包:Install-Package AnimatedGif -Version 1.0.5h
- 一、String与Date(java.util.Date)互转 1.1 String -&g
- 熔断与降级为什么在RPC环节中有熔断以及降级的需求,详细的原因这里不多解释,从网上搜索一张图做示意。熔断我理解熔段主要解决如下几个问题:当所
- 目录一、简介二、环境介绍三、主题1. ThemeData2. main.dart or MaterialApp四、全局配置1. Global
- 一、定义1、T 代表一种类型可以加在类上,也可以加在方法上1)T 加在类上class SuperClass<A>{//todo}
- VS2019打包WPF安装程序最新教程,使用Visual Studio 2019开发的WPF程序如果想要打包为安装程序,除了在VS2019找
- Feign获取异常信息最近在使用Feign调用时,出现了异常,原本使用的是fallback,直接返回了自定义的结果@Override &nb
- 在使用Android Studio开发的时候,如遇到多个项目引用同一个library的情况时,会遇到在每个项目中都要有一套library的代
- 一、问题描述LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位、地图、导航等,首先
- 动态数据源在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库。又比如
- AsyncTask,顾名思义,异步任务。说到异步,最简单的理解就是不同步。再复杂一点理解,就得举例子了。假设我要去火车站买票,刚到火车站我突
- 代码复现不要,思考一下会打印出什么?List<String> list1 = new ArrayList<>(Arr
- 视图绑定通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑
- 本文实例讲述了C#编程读取文档Doc、Docx及Pdf内容的方法。分享给大家供大家参考。具体分析如下:Doc文档:Microsoft Wor
- 问题描述fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效使用版本应用名称版本