5.分类管理模块开发
程序员文章站
2022-03-15 20:54:38
...
功能介绍
获取节点
增加节点
修改名字
获取分类ID
递归子节点ID
…
学习目标
如何设计及封装无限层级的树状数据结构
递归算法的设计思想
//递归算法,算出子节点
private Set<Category> findChildCategory(Set<Category> categorySet ,Integer categoryId){
Category category = categoryMapper.selectByPrimaryKey(categoryId);
if(category != null){
categorySet.add(category);
}
//查找子节点,递归算法一定要有一个退出的条件
List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
for(Category categoryItem : categoryList){
findChildCategory(categorySet,categoryItem.getId());
}
return categorySet;
}
如何处理复杂对象排重–使用Set集合 并 重写equal和hashCode方法
重写hashcode和equal的注意事项
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Category category = (Category) o;
return !(id != null ? !id.equals(category.id) : category.id != null);
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
}
数据表设计
id的parent_id代表他的父级分类
categoryId的默认值通过springmvc的requestparam注解进行控制。
接口设计
分类管理接口设计:https://gitee.com/imooccode/happymmallwiki
上一篇: BP神经网络在无人机成本估算中的应用