Java遞歸算法遍歷部門代碼示例
遞歸是一個(gè)非常有用的知識(shí)點(diǎn)。寫(xiě)點(diǎn)實(shí)例幫助自己記憶
中間有過(guò)程代碼
首先一個(gè)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; } }
測(cè)試代碼:
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 { /** * 結(jié)構(gòu) * ┝開(kāi)發(fā)部 * ┝開(kāi)發(fā)一部 * ┝開(kāi)發(fā)一組 * ┝開(kāi)發(fā)二組 * ┝開(kāi)發(fā)二部 * ┝開(kāi)發(fā)三組 * ┝開(kāi)發(fā)四組 * ┝銷售部 * ┝銷售一部 * ┝銷售二部 */ public static List<Depart> findDepartTopList(){ //頂級(jí) Depart depart1=new Depart(); depart1.setName("開(kāi)發(fā)部"); //二級(jí) Depart depart1_1=new Depart(); depart1_1.setName("開(kāi)發(fā)一部"); //三級(jí) Depart depart1_1_1=new Depart(); depart1_1_1.setName("開(kāi)發(fā)一組"); Depart depart1_1_2=new Depart(); depart1_1_2.setName("開(kāi)發(fā)二組"); 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("開(kāi)發(fā)二部"); Depart depart1_2_1=new Depart(); depart1_2_1.setName("開(kāi)發(fā)一組"); Depart depart1_2_2=new Depart(); depart1_2_2.setName("開(kāi)發(fā)二組"); 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); //頂級(jí) Depart depart2=new Depart(); depart2.setName("銷售部"); //二級(jí) 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,"="); } /**將所有的部門打印出來(lái)*/ public static void getAllDepartName(Depart depart){ System.out.println(depart.getName()); for (Depart chirden : depart.getDeparts()) { getAllDepartName(chirden); } } /**將所有的部門打印出來(lái)*/ 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); } } }
總結(jié)
以上就是本文關(guān)于Java遞歸算法遍歷部門代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Java編程用棧來(lái)求解漢諾塔問(wèn)題的代碼實(shí)例(非遞歸)
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
搭建 springboot selenium 網(wǎng)頁(yè)文件轉(zhuǎn)圖片環(huán)境的詳細(xì)教程
這篇文章主要介紹了搭建 springboot selenium 網(wǎng)頁(yè)文件轉(zhuǎn)圖片環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08spring監(jiān)視器actuator配置應(yīng)用
這篇文章主要介紹了spring監(jiān)視器actuator配置應(yīng)用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07JVM執(zhí)行引擎和垃圾回收要點(diǎn)總結(jié)
不論是在問(wèn)題現(xiàn)場(chǎng)還是跳槽面試,我們面對(duì)JVM性能問(wèn)題,依舊會(huì)束手無(wú)辭,它需要你對(duì)Java虛擬機(jī)的實(shí)現(xiàn)和優(yōu)化,有極為深刻的理解。所以我在這里整理了一下 JVM的知識(shí)點(diǎn)。今天說(shuō)說(shuō)虛擬機(jī)執(zhí)行引擎和垃圾回收,都是十足的干貨,請(qǐng)各位看官耐心批閱!2021-06-06Java利用讀寫(xiě)的方式實(shí)現(xiàn)音頻播放代碼實(shí)例
這篇文章主要介紹了Java利用讀寫(xiě)的方式實(shí)現(xiàn)音頻播放代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11java.net.SocketException: Connection reset 解決方法
最近糾結(jié)致死的一個(gè)java報(bào)錯(cuò)java.net.SocketException: Connection reset 終于得到解決2013-03-03SpringBoot項(xiàng)目Maven下載依賴速度慢問(wèn)題的解決方法
在使用Maven構(gòu)建項(xiàng)目時(shí),有時(shí)會(huì)遇到下載依賴包速度慢的問(wèn)題,為了提高下載速度,我們可以將默認(rèn)的倉(cāng)庫(kù)地址替換為國(guó)內(nèi)鏡像源,所以本文介紹了SpringBoot項(xiàng)目Maven下載依賴速度慢問(wèn)題的解決方法,需要的朋友可以參考下2024-08-08