根据id和父id生成树结构:
方法一:
package com.example.demos.common.utils.tree;
import com.example.demos.common.utils.api.GKConstants;
import com.example.demos.common.utils.api.StringGKUtils;
import com.example.demos.entities.TreeNode;
import java.util.ArrayList;
import java.util.List;
/**
* Project: demos
* ClassName: com.example.demos.common.utils.tree
* @description 树结构
* @date: 2021/1/16 10:02
* @author: gaoke
* Version: 1.0.0
* Copyright: Copyright(c) 2021
*/
public class CommonTreeUntil {
private TreeNode treeNode = new TreeNode();
private List<TreeNode> testList;
private String pId;
public CommonTreeUntil(List<TreeNode> treeNodeList, String id){
if (StringGKUtils.isBlank(id)){
id = GKConstants.pCode;
}
this.testList = treeNodeList;
this.pId = id;
}
//初始化,获取根节点
public TreeNode start(){
for (int i = 0; i < testList.size(); i++) {
if (StringGKUtils.equals(pId,testList.get(i).getId())){
List<TreeNode> lists = new ArrayList<>();
treeNode.setId(pId);
treeNode.setPid(pId);
treeNode.setTitle(testList.get(i).getTitle());
treeNode.setChildren(lists);
buildTree(testList,testList.get(i).getId(),treeNode.getChildren());
}
}
return treeNode;
}
//获取树节点
public void buildTree(List<TreeNode> testLists,String id,List<TreeNode> newTestListNext){
for (int j = 0; j < testLists.size(); j++) {
if (StringGKUtils.equals(id,testLists.get(j).getPid())){
newTestListNext.add(testLists.get(j));
//检查是否存在下一节点
boolean isExist = isExistNext(testLists,testLists.get(j).getId());
if (isExist){
List<TreeNode> lists = new ArrayList<>();
newTestListNext.get(newTestListNext.size()-1).setChildren(lists);
List<TreeNode> treeNodeList = newTestListNext.get(newTestListNext.size()-1).getChildren();
buildTree(testLists,testLists.get(j).getId(),treeNodeList);
}
}
}
}
//是否存在下一节点
public boolean isExistNext(List<TreeNode> testLists,String id){
for (int i = 0; i < testLists.size(); i++) {
if (StringGKUtils.equals(id,testLists.get(i).getPid())){
return true;
}
}
return false;
}
}
方法二:
package com.example.demos.common.utils.tree;
import com.example.demos.common.utils.api.GKConstants;
import com.example.demos.entities.SysDepartment;
import java.util.List;
/**
* Project: demos
* ClassName: com.example.demos.common.utils.api
* @date: 2020/4/9 16:00
* @author: ke
* Version: 1.0.0
* Copyright: Copyright(c) 2020
*/
public class DepartmentSearchUtils {
public static List<SysDepartment> getSys(List<SysDepartment> sysPermissions, String name) {
Integer level = 1;
for (int i = 0; i < sysPermissions.size(); i++) {
if(sysPermissions.get(i).getDeptList() != null){
if(sysPermissions.get(i).getDeptList().size() != 0){
level = build(sysPermissions.get(i).getDeptList(),name,level);
}else{
if(sysPermissions.get(i).getDeptName().contains(name)){
continue;
}else{
sysPermissions.remove(sysPermissions.get(i));
i--;
}
}
}else{
if(sysPermissions.get(i).getDeptName().contains(name)){
continue;
}else{
sysPermissions.remove(sysPermissions.get(i));
i--;
}
}
}
return sysPermissions;
}
public static List<SysDepartment> getVal(List<SysDepartment> sysPermissions,String name,String deptCode){
int level = GKConstants.LEVEL - deptCode.length()/3 ;
for (int i =0;i<level;i++){
getSys(sysPermissions,name);
}
return sysPermissions;
}
private static Integer build(List<SysDepartment> sysPermissions,String name,Integer level) {
for (int i = 0; i < sysPermissions.size(); i++){
if(sysPermissions.get(i).getDeptList() != null){
if(sysPermissions.get(i).getDeptList().size() != 0){
build(sysPermissions.get(i).getDeptList(),name,level);
}else{
if(sysPermissions.get(i).getDeptName().contains(name)){
continue;
}else{
sysPermissions.remove(sysPermissions.get(i));
i--;
}
}
}else{
if(sysPermissions.get(i).getDeptName().contains(name)){
continue;
}else{
sysPermissions.remove(sysPermissions.get(i));
i--;
}
}
}
return level;
}
}