1.如果改子类有父类,则把父类加入子类的父ID中
private static List breadthParentFirst(List rootTree) {
if (CollectionUtils.isEmpty(rootTree)) {
return Lists.newArrayList();
}
List mentVoList=Lists.newArrayList();
rootTree.forEach((root) -> {
Queue queue = new LinkedList();
queue.offer(root);
while (!queue.isEmpty()){
MentVo tree = (MentVo) queue.poll();
List parent = tree.getParent();
if (!CollectionUtils.isEmpty(parent)) {
Iterator var5 = parent.iterator();
while (var5.hasNext()) {
MentVo child = (MentVo) var5.next();
queue.offer(child);
}
}
mentVoList.add(tree);
}
});
return mentVoList;
}
2.如果父类id不为空,则查询该子类的父类。
Map> addListMap = departmentList.stream()
.filter(depart -> Objects.nonNull(depart.getId())).collect(Collectors.groupingBy(MentVo::getId));
departmentList.forEach((item) -> {
if (!CollectionUtils.isEmpty(addListMap.get(item.getParentid()))) {
item.setParent(addListMap.get(item.getParentid()));
}
});
departmentList.forEach((item) -> {
item.setLevel(breadthParentFirst(item.getParent()).size());
});
departmentList = departmentList.stream().sorted((x, y) -> {
return x.getLevel().compareTo(y.getLevel());
}).collect(Collectors.toList());
Original: https://www.cnblogs.com/eternality/p/16688343.html
Author: 逆梦
Title: 根据子类查询父类
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622072/
转载文章受原作者版权保护。转载请注明原作者出处!