English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Esempio di algoritmo ricorsivo di esplorazione del dipartimento in Java

La ricorsione è un punto di conoscenza molto utile. Scrivere un esempio per aiutarmi a ricordare

C'è del codice di processo nel mezzo

Prima di tutto una classe javapojo

package com.qcf.po;
import java.util.HashSet;
import java.util.Set;
public class Depart {
	private long id;
	private String name;
	private String destinazione;
	//用户
	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 getDestinazione() {
		return destinazione;
	}
	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,"=");
	}
	/**Stampare tutti i dipartimenti*/
	public static void getAllDepartName(Depart depart){
		System.out.println(depart.getName());
		for (Depart chirden : depart.getDeparts()) {
			getAllDepartName(chirden);
		}
	}
	/**Stampare tutti i dipartimenti*/
	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);
		}
	}
}

Sommario

Questo è tutto il contenuto dell'esempio di codice di esplorazione ricorsiva dell'algoritmo Java in questo articolo. Spero che sia utile a tutti. Gli amici interessati possono continuare a consultare il nostro sito:

Analisi degli esempi di algoritmi ricorsivi in Java

Esempio di codice per risolvere il problema del Tower of Hanoi utilizzando uno stack in Java (non ricorsivo)

Analisi dettagliata delle scelte di esplorazione della mappa in Java

Se c'è qualcosa di insufficiente, ti preghiamo di lasciare un commento. Grazie per il supporto degli amici del sito!

Dichiarazione: il contenuto di questo articolo è stato preso da Internet, di proprietà del rispettivo autore, il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente, il sito web non detiene i diritti di proprietà, non è stato editato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, il sito web eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare