树形结构遍历
通用树形结构数据过滤方法,不同case稍加修改
/**
* 树形筛选查找
*
* @param treeData
* @param menuUniqueKeyList
* @return
*/
public UniMenuCommonDTO screenTree(UniMenuCommonDTO treeData, List<String> menuUniqueKeyList) {
// 当前树结构跟节点是否满足过滤条件
if (null != treeData.getSpmb() && !menuUniqueKeyList.contains(treeData.getSpmb())) {
return null;
}
List<UniMenuCommonDTO> subTreeData = treeData.getSubMenus();
// 不存在子集,判断当前树结构是否满足过滤条件
if (CollectionUtils.isEmpty(subTreeData)) {
return treeData;
}
// 存在子集,递归过滤
List<UniMenuCommonDTO> uniMenuCommonDTOList = Lists.newArrayList();
for (UniMenuCommonDTO uniMenuCommonDTO : subTreeData) {
if (null == uniMenuCommonDTO) {
continue;
}
UniMenuCommonDTO screenUniMenuCommonDTO = screenTree(uniMenuCommonDTO, menuUniqueKeyList);
if (null == screenU