> 文档中心 > Java封装树形结构(任意父节点)

Java封装树形结构(任意父节点)

直接上代码,比如封装组织树形结构

@Servicepublic class TestService{    public List<DepTreeDto> treeDept() { //查询列表 List<DepTreeDto> deptList = deptMapper.listTreeDept(); return buildDeptTree(deptList);    }/     * 构建前端所需要树结构     *     * @param deptList 部门列表     * @return 树结构列表     */    private List<DepTreeDto> buildDeptTree(List<DepTreeDto> deptList) { //新集合 List<DepTreeDto> returnList = new ArrayList<>(); List<Integer> tempList = new ArrayList<>(); for (DepTreeDto dept : deptList) {     tempList.add(dept.getId()); } for (DepTreeDto dept : deptList) {     // 如果是顶级节点, 遍历该父节点的所有子节点     if (!tempList.contains(dept.getParentId())) {  recursionFn(deptList, dept);  returnList.add(dept);     } } //没有查询到节点则以当前节点 if (returnList.isEmpty()) {     returnList = deptList; } return returnList;    }    /     * 递归列表     */    private void recursionFn(List<DepTreeDto> list, DepTreeDto t) { // 得到子节点列表 List<DepTreeDto> childList = getChildList(list, t); t.setChildren(childList); for (DepTreeDto tChild : childList) {     // 判断是否有子节点     if (StringUtils.isNotNull(tChild.getParentId()) && tChild.getParentId().equals(t.getId())) {  for (DepTreeDto n : childList) {      recursionFn(list, n);  }     } }    }    /     * 得到子节点列表     */    private List<DepTreeDto> getChildList(List<DepTreeDto> list, DepTreeDto t) { List<DepTreeDto> tList = new ArrayList<>(); for (DepTreeDto n : list) {     if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().equals(t.getId())) {  tList.add(n);     } } return tList;    }}