方法一:
@Data
public class XXXXVO implements Serializable {
private static final long serialVersionUID = -6328566979294023158L;
private String groupName;
private String groupId;
private String type;
List<XXXXVO> children = new ArrayList<>();
private String id;
private String parentId;
}
private void ldapGroupTreeHandle(List<XXXXVO> list) {
Map<String, List<XXXXVO>> listMap = list.stream().collect(Collectors.groupingBy(XXXXVO::getParentId));
List<XXXXVO> deleteList = new ArrayList<>();
list.forEach(group -> {
List<XXXXVO> entityList = listMap.get(group.getId());
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(entityList)) {
group.setChildren(entityList);
deleteList.addAll(entityList);
}
});
list.removeAll(deleteList);
}
方法二:
private List<XXXVO> getTree(List<GroupEntity> lists) {
List<XXXVO> treeList = new ArrayList<>();
for (GroupEntity groupEntity : lists) {
if (groupEntity.getParentId().equals(Constant.STR_MINUS_ONE)) {
XXXVO XXXVO = new XXXVO();
BeanUtils.copyProperties(groupEntity, XXXVO);
XXXVO.setChildren(getChildrenNode(XXXVO.getId(), lists));
treeList.add(XXXVO);
}
}
return treeList;
}
private List<XXXVO> getChildrenNode(String id, List<GroupEntity> allList) {
List<XXXVO> newTreeList = new ArrayList<>();
for (GroupEntity groupEntity : allList) {
if (groupEntity.getParentId().equals(Constant.STR_MINUS_ONE)) {
continue;
}
if (groupEntity.getParentId().equals(id)) {
XXXVO XXXVO = new XXXVO();
BeanUtils.copyProperties(groupEntity, XXXVO);
XXXVO.setChildren(getChildrenNode(XXXVO.getId(), allList));
newTreeList.add(XXXVO);
}
}
return newTreeList;
}