import java.io.Serializable;
/**
* 部门基本bean
*/
public class Department implements Serializable{
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 部门编号
*/
private String orgDepId;
/**
* 部门名称
*/
private String orgDepName;
/**
* 父节点
*/
private String parentId;
/**
* 部门类别
*/
private String organizationType;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getOrgDepId() {
return orgDepId;
}
public void setOrgDepId(String orgDepId) {
this.orgDepId = orgDepId;
}
public String getOrgDepName() {
return orgDepName;
}
public void setOrgDepName(String orgDepName) {
this.orgDepName = orgDepName;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getOrganizationType() {
return organizationType;
}
public void setOrganizationType(String organizationType) {
this.organizationType = organizationType;
}
}
创建一个类保存组织架构树结构
package com.dx.finance.web.depbudget.service;
import java.util.ArrayList;
import java.util.List;
import com.dx.project.domain.org.Department;
public class TreeSort {
//节点的部门
private Department dep;
//子节点列表
private List<TreeSort> list;
public TreeSort(Department dep){
this.dep = dep;
list = new ArrayList<>();
}
public Department getDep() {
return dep;
}
public void setDep(Department dep) {
this.dep = dep;
}
public List<TreeSort> getList() {
return list;
}
public void setList(List<TreeSort> list) {
this.list = list;
}
}
/**
*
* @param orgs 无序的组织架构数据
* @param root
* @return
*/
public static List<Department> sortDep(List<Department> orgs, Department root){
TreeSort treesort = new TreeSort(root);
sort(orgs,treesort);
List<Department> list = new ArrayList<>();
addToList(treesort,list);
return list;
}
private static void sort(List<Department> orgs, TreeSort treeSort){
//遍历数据,将节点置于父节点类的list中
for(Department dep : orgs){
if(dep.getParentId().equals(treeSort.getDep().getOrgDepId())){
TreeSort tree = new TreeSort(dep);
treeSort.getList().add(tree);
sort(orgs,tree);
}
}
}
前序遍历树结构,结果加入list
private static void addToList(TreeSort treesort, List<Department> list) {
list.add(treesort.getDep());
if(!treesort.getList().isEmpty()){
for(TreeSort t : treesort.getList()){
addToList(t, list);
}
}
}
测试(为方便测试,以上方法都未静态方法,实际不需要)
public static void main(String[] args) {
String str = "[{\"id\":\"20180420125307889f2f1653df0a94d03b525bc86422da3f4\",\"parentId\":\"0\",\"orgDepName\":\"122334\",\"orgDepId\":\"1\",\"organizationType\":\"org\"},{\"id\":\"2018042012533728920508aa67ce34802aea3523e0c80a5d7\",\"parentId\":\"1\",\"orgDepName\":\"安抚\",\"orgDepId\":\"20180420125337289719ec7b80c7e4bd8b402c17bbacb545a\",\"organizationType\":\"org\"},{\"id\":\"20180420125307909d21476c6cbe14907bbe544a3a152bb77\",\"parentId\":\"1\",\"orgDepName\":\"总经理办公室\",\"orgDepId\":\"Z00000001\",\"organizationType\":\"dep\"},{\"id\":\"201804201253311181bc0c93a8f6148f88c429129a54c3e75\",\"parentId\":\"Z00000001\",\"orgDepName\":\"失败\",\"orgDepId\":\"201804201253311182799983c88e94fcaa62f8a0a49a5b3a5\",\"organizationType\":\"dep\"},{\"id\":\"20180420125343464fa701617a6b549f8815d7793d50dd612\",\"parentId\":\"20180420125337289719ec7b80c7e4bd8b402c17bbacb545a\",\"orgDepName\":\"安慰法\",\"orgDepId\":\"20180420125343464a18026dc45914c3db7725aeac1650005\",\"organizationType\":\"dep\"},{\"id\":\"2018042012534844948f15dd7cc2a4f95ba91e4de6e54366e\",\"parentId\":\"20180420125337289719ec7b80c7e4bd8b402c17bbacb545a\",\"orgDepName\":\"啊儿\",\"orgDepId\":\"2018042012534844910fa08e0398f4d59aae9b60e05daaa11\",\"organizationType\":\"dep\"},{\"id\":\"2018042012535500914690954bf844592a1e05a3e7add842e\",\"parentId\":\"20180420125343464a18026dc45914c3db7725aeac1650005\",\"orgDepName\":\"请4日报\",\"orgDepId\":\"20180420125355009164ebb248a8d40068876a57d4e109fc3\",\"organizationType\":\"dep\"},{\"id\":\"2018042012540655922f4c939570c47b7800a169884d5be3e\",\"parentId\":\"1\",\"orgDepName\":\"确认全部\",\"orgDepId\":\"201804201254065581401a9d7281c40038e772b512180dc6c\",\"organizationType\":\"dep\"},{\"id\":\"20180420125412753f0b748a7649b4a189dd26cb20a1e69d0\",\"parentId\":\"1\",\"orgDepName\":\"亲爱太突然\",\"orgDepId\":\"20180420125412753fb5ed97bcb2a4812920de5ff0d3681c4\",\"organizationType\":\"dep\"},{\"id\":\"2018042012541830496920efecfeb4a94b76d961dcad45fa6\",\"parentId\":\"201804201254065581401a9d7281c40038e772b512180dc6c\",\"orgDepName\":\"强弱5他\",\"orgDepId\":\"201804201254183047b379adec4134369b3a1e4f03cf6fced\",\"organizationType\":\"dep\"},{\"id\":\"2018042012542220296584c68b2904c26b006b7039ec8064b\",\"parentId\":\"201804201254183047b379adec4134369b3a1e4f03cf6fced\",\"orgDepName\":\"全4让\",\"orgDepId\":\"2018042012542220264f8edfb9f9a41cc89868ddeab4c0fe3\",\"organizationType\":\"dep\"},{\"id\":\"20180420125425949c9d0cc13ffeb4e70875531eb6d2ac547\",\"parentId\":\"2018042012542220264f8edfb9f9a41cc89868ddeab4c0fe3\",\"orgDepName\":\"请4软\",\"orgDepId\":\"201804201254259497eef5fd4c533493f999a09a91e12423e\",\"organizationType\":\"dep\"},{\"id\":\"20180420125431385230e075f34c346bab3c470a6278301f1\",\"parentId\":\"2018042012542220264f8edfb9f9a41cc89868ddeab4c0fe3\",\"orgDepName\":\"阿尔高\",\"orgDepId\":\"20180420125431385656756baa1104b22a41e0371315a3897\",\"organizationType\":\"dep\"},{\"id\":\"20180420125436033b2c36c767e214630926aa206aaae6e02\",\"parentId\":\"2018042012542220264f8edfb9f9a41cc89868ddeab4c0fe3\",\"orgDepName\":\"阿尔高投入\",\"orgDepId\":\"201804201254360335109d9fcfe8e4749abf8b429bd1c8cd5\",\"organizationType\":\"dep\"},{\"id\":\"2018042012544122960198a0563ab49adb600bae064e4e791\",\"parentId\":\"201804201254065581401a9d7281c40038e772b512180dc6c\",\"orgDepName\":\"安全感\",\"orgDepId\":\"201804201254412291d10a40d5e164707ae5e264df10f7628\",\"organizationType\":\"dep\"},{\"id\":\"2018042012544615763d7be68529d4e01adde9a3241eaa9af\",\"parentId\":\"2018042012534844910fa08e0398f4d59aae9b60e05daaa11\",\"orgDepName\":\"啊儿格瑞特\",\"orgDepId\":\"20180420125446157ba5170b4b1d9472191c0ee58caacf032\",\"organizationType\":\"dep\"},{\"id\":\"2018042012545632673ab86e93de54ef286d37abfabca1d84\",\"parentId\":\"20180420125446157ba5170b4b1d9472191c0ee58caacf032\",\"orgDepName\":\"阿二锅头\",\"orgDepId\":\"201804201254563267c45b1807bb44858a99d117174633bb5\",\"organizationType\":\"dep\"},{\"id\":\"201804201255021467a6440aad5da455b93f3c983b35f1388\",\"parentId\":\"20180420125446157ba5170b4b1d9472191c0ee58caacf032\",\"orgDepName\":\"阿尔高购房人\",\"orgDepId\":\"20180420125502146a25260f169714c069e9788be5a41226c\",\"organizationType\":\"dep\"},{\"id\":\"201804201255110885226d88554254e368cb1ec945155f720\",\"parentId\":\"20180420125446157ba5170b4b1d9472191c0ee58caacf032\",\"orgDepName\":\"啊儿爱如风\",\"orgDepId\":\"2018042012551108848e2de67a63345fca413e53b8e9134e8\",\"organizationType\":\"dep\"}]";
List<Department> list= JSONObject.parseArray(str, Department.class);
List<Department> sortDep = sortDep(list, list.get(0));
for(Department dep : sortDep){
System.out.println(dep.getOrgDepName());
}
}
结果: