0
点赞
收藏
分享

微信扫一扫

JAVA 树形结构处理

杰森wang 2023-05-06 阅读 87

List<DeptVO> list = deptService.customList(deptVO, user.getType(), user.getRoleId());
		//最顶层根节点
		List<DeptVO> rootList = new ArrayList<>();
		//非最顶层根节点
		List<DeptVO> bodyList = new ArrayList<>();
		for (DeptVO dept : list) {
			if (dept.getParentId() == 0) {
				rootList.add(dept);
			} else {
				bodyList.add(dept);
			}
		}
		if (ObjectUtils.isNotEmpty(bodyList)) {
			//声明一个map,用来过滤已操作过的数据
			Map<String, String> map = new HashMap<>(bodyList.size());
			rootList.forEach(parent -> getChild(parent, bodyList, map));
			return R.data(rootList);
		} else {
			return R.data(rootList);
		}




private void getChild(DeptVO deptVO, List<DeptVO> bodyList, Map<String, String> map) {
		List<DeptVO> childList = new ArrayList<>();
		bodyList.stream().filter(c -> !map.containsKey(c.getId()))
			.filter(c -> c.getParentId().equals(deptVO.getId()))
			.forEach(c -> {
				map.put(c.getId().toString(), c.getParentId().toString());
				getChild(c, bodyList, map);
				childList.add(c);
			});

		deptVO.setChildren(childList);
	}

举报

相关推荐

0 条评论