递归查询所有部门,并按部门等级打印

实体:
package demo;
/**
*
*@author:
*@CreateTime:
*@ModifiedDate:
*@ModifiedBy:
*@Version:
*/
public class Dempr {

	private String demp1;
	private String demp2;
	private String demp3;
	public Dempr() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Dempr(String demp1, String demp2, String demp3) {
		super();
		this.demp1 = demp1;
		this.demp2 = demp2;
		this.demp3 = demp3;
	}
	public String getDemp1() {
		return demp1;
	}
	public void setDemp1(String demp1) {
		this.demp1 = demp1;
	}
	public String getDemp2() {
		return demp2;
	}
	public void setDemp2(String demp2) {
		this.demp2 = demp2;
	}
	public String getDemp3() {
		return demp3;
	}
	public void setDemp3(String demp3) {
		this.demp3 = demp3;
	}
	
	
	
}
方法:
 
package demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** * 
 * @author:
 * @CreateTime:
 * @ModifiedDate:
 * @ModifiedBy:
 * @Version:
 */
public class dempimpl {
    public static void main(String[] args) {
        List<Dempr> dr = new ArrayList<>();
        Dempr d1 = new Dempr();
        //d1.setDemp1("0"); 
        // 上级 d1.setDemp2("1"); 
        // 本级 d1.setDemp3("部门1"); 
        // 名称 dr.add(d1); 
        Dempr d2 = new Dempr();
        d2.setDemp1("1");
        d2.setDemp2("2");
        d2.setDemp3("部门2");
        dr.add(d2);
        Dempr d3 = new Dempr();
        d3.setDemp1("2");
        d3.setDemp2("3");
        d3.setDemp3("部门3");
        dr.add(d3);
        Dempr d4 = new Dempr();
        d4.setDemp1("1");
        d4.setDemp2("4");
        d4.setDemp3("部门4");
        dr.add(d4);
        Map<Integer, List<Dempr>> newMap = new HashMap<>();
        List<Dempr> newList = null;
        
        for (Dempr dempr : dr) {
            Integer demp = demp(dr,1,dempr.getDemp1());
            if(newMap.containsKey(demp)){
                newList = newMap.get(demp);
                newList.add(dempr);
                newMap.put(demp, newList);
            }else{
                newList = new ArrayList<>();
                newList.add(dempr); newMap.put(demp, newList);
            }
        }
        
        for (Integer key : newMap.keySet()) {
            List<Dempr> lastList = newMap.get(key);
            System.out.println(">>--------"+key+"级--------");
            for (Dempr dempr : lastList) {
                if (dempr.getDemp1() == null) {
                    System.out.println("部门等级: " + key + " 总部:" + dempr.getDemp2() + " 总部名称:" + dempr.getDemp3());
                }else{
                    System.out.println("部门等级: " + key + " 父级部门: " + dempr.getDemp1() + " 本级部门:" + dempr.getDemp2() + " 部门名称:" + dempr.getDemp3());
                } 
            } 
        } 
    }

    public static Integer demp(List<Dempr> dr, Integer num1, String demp1) {
        for (Dempr role : dr) {
            if (role.getDemp2().equals(demp1)) {
                num1 += 1; return demp(dr, num1, role.getDemp1());
            } 
        }
        return num1; 
    } 
} 


打印出来即为部门层级结果。

 
 
 
>>--------1级--------
部门等级: 1 总部:1 总部名称:部门1
>>--------2级--------
部门等级: 2 父级部门: 1 本级部门:2 部门名称:部门2
部门等级: 2 父级部门: 1 本级部门:4 部门名称:部门4
>>--------3级--------
部门等级: 3 父级部门: 2 本级部门:3 部门名称:部门3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值