• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Java的递归map遍历公司组织架构

java 来源:曹曹曹一晨 1次浏览
package com.lanxck.cyc;

//封装的一个类。

public class Entity {
private Integer id;
private Integer pid;
private String name;



public Entity(Integer id, Integer pid, String name) {
	super();
	this.id = id;
	this.pid = pid;
	this.name = name;
}
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public Integer getPid() {
	return pid;
}
public void setPid(Integer pid) {
	this.pid = pid;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}


}

===================华丽的分割线=====================
package com.lanxck.cyc;

import java.util.HashMap;
import java.util.Map;

public class TestTree {
//新建的一个map
	public Map<Integer, Entity> map = new HashMap<Integer, Entity>();
      

     //来写一个方法存放数据的

	public Map<Integer, Entity> GetMap() { 
	
		
		          括号的参数 一参:id 二参:pid 三参:名字
		
		Entity entity0 = new Entity(1, 0, "公司");
		map.put(entity0.getId(), entity0);

		Entity entity1 = new Entity(2, 1, "部门1");
		map.put(entity1.getId(), entity1);

		Entity entity2 = new Entity(3, 1, "部门2");
		map.put(entity2.getId(), entity2);

		Entity entity8 = new Entity(9, 3, "员工2");
		map.put(entity8.getId(), entity8);

		Entity entity9 = new Entity(10, 3, "员工3");
		map.put(entity9.getId(), entity9);

		Entity entity10 = new Entity(11, 7, "员工4");
		map.put(entity10.getId(), entity10);

		Entity entity3 = new Entity(4, 2, "组长1");
		map.put(entity3.getId(), entity3);

		Entity entity4 = new Entity(5, 2, "组长2");
		map.put(entity4.getId(), entity4);

		Entity entity5 = new Entity(6, 3, "组长3");
		map.put(entity5.getId(), entity5);

		Entity entity6 = new Entity(7, 3, "组长4");
		map.put(entity6.getId(), entity6);

		Entity entity7 = new Entity(8, 4, "员工1");
		map.put(entity7.getId(), entity7);

		return map;
	}
                     =========重点方法==========
                            参数是父类的
	public void getChild(Entity entity) {
		// 新建一個新的容器
	Map<Integer, Entity> mapChild = new HashMap<Integer, Entity>();
		//进行遍历          
		for (Entity en : mapChild.values()) {
			// 如果Pid==id那麼就是父子關係
			if (en.getPid() == entity.getId()) {
				//这里的打印只是一个测试
				System.out.println(en.getName());
				// 调用自己继续进行子类的查找
				getChild(en);
			}
		}

	}
==================================================================  
 //测试:
	public static void main(String[] args) {
	
		TestTree tree = new TestTree();
		
		tree.GetMap();//初始化方法不然打印不出来
		
		for (Entity en : tree.map.values()) {

			System.out.println(en.getName());
			tree.getChild(en);
		}

	}

}



打印结果如下:
============================================================


//先遍历兄弟在继续找子类
公司
部门1
部门2
组长1
组长2
组长3
组长4
员工1
员工2
员工3
员工4



版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)