700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java封装树形结构(任意父节点)

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

时间:2020-02-28 08:13:55

相关推荐

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;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。