遞歸是一個非常有用的知識點。寫點實例幫助自己記憶
中間有過程代碼
首先一個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編程用棧來求解漢諾塔問題的代碼實例(非遞歸)
Java中map遍歷方式的選擇問題詳解
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!