出现的问题
后端代码
@Override
public List<TbCategory> listTree() {
List<TbCategory> tbCategories = tbCategoryMapper.selectList(null);
List<TbCategory> level1Menus = tbCategories.stream().filter((tbCategory) -> {
return tbCategory.getParentId() == 0;
}).map((menu) -> {
menu.setChildren(getSubMenus(menu, tbCategories));
return menu;
}).sorted((menu1, menu2) -> {
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());
return level1Menus;
}
private List<TbCategory> getSubMenus(TbCategory root, List<TbCategory> all) {
List<TbCategory> children = all.stream().filter(tbCategory -> {
return tbCategory.getParentId() == root.getId();
}).map((menu) -> {
menu.setChildren(getSubMenus(menu, all));
return menu;
}).sorted((menu1, menu2) -> {
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());
return children;
}
问题代码以及原因
- 是==,前后存储的内存地址不一样造成的
比如:
s1 = new String(“abc”);
s2 = new String(“abc”);
那么这里的s1==s2 是 false,
两个变量的内存地址不一样,也就是说它们指向的对象不 一样,故不相等
return tbCategory.getParentId() == root.getId();
修改
- 把==换成equals就好啦
return tbCategory.getParentId().equals(root.getId()) ;
- 最后别忘记在entity层加入
@ApiModelProperty(value = "子分类")
@TableField(exist = false)
private List<TbCategory> children;