简单树报错
LmangM opened this issue · 2 comments
LmangM commented
简单树形结构报错,如图所示树形顶级的父类id为null
尝试将顶级父类id定义为“0”后,方法的第三行报错,再次将第三行的current.getParentId()定义为“0”后,只能得到顶级那一层的数据
private void listToTree(E current, final List<E> list) {
Map<K, List<E>> parentIdChildrenMap = list.stream().collect(Collectors.groupingBy(Tree::getParentId));
for (E entity : list) {
K id = entity.getId();
List<E> es = parentIdChildrenMap.get(id);
if (null != es) {
List<E> collect = es.stream().distinct().collect(Collectors.toList());
entity.setChildren(collect);
}
}
current.setChildren(list.stream().filter(entity -> Objects.equals(entity.getParentId(), 0L)).collect(Collectors.toList()));
}
同时在判断获取普通树形或左右值树的service时,总是进入左右值的方法,所以我将此处的superclass.isAssignableFrom改成了equals
// 超类比较
if (superclass.equals(BasePreOrderTree.class)) {
return CrudUtils.getCrudService(
getModelClass(),
(Class<K>) TypeUtil.getTypeArgument(getClass(), 1),
BasePreOrderTreeService.class
);
}