有一类Category
,具有以下(重要)属性:
public class Category{
private Integer id;
private String name;
private Category parentCategory;
private Set<Category> subcategories = new HashSet<Category>();
...
//getters and setters
}
我正在尝试实现类别/子类别概念。一个类别可以有零个或多个子类别。一个类别只能有一个父类别(可以是 null
)。对于顶级类别 parentCategory=null
.
现在,我有一个所有类别的列表,List<Category> allCategories = (retrieved from database)
.
如果我有一些类别(或 categoryId
),并且 allCategories
,如何获得给定类别的所有子类别(及其子类别)的列表?使用哪个循环?
(它可以限制在子类别深度级别 3)
最佳答案
这里是一些伪代码,如果你想要更具体的解决方案,请提供结果集的详细信息。
for(all result set) {
currentCategoriesFromDb = current category;
currentCategoriesFromDb.setParentCategory() = parentCategoryId;
parentCategory.addCategory(currentCategoriesFromDb )
}
如果所有类别层次结构都已初始化并且您想导航,您可以这样做:
currentCategory.getChildByName(name1).getChildByName(name2);
如果你想递归地确定所有的东西:
printbCategories(Category category) {
print(category);
List<Category> subCategories = category.getSubCategories();
for(Category category : subCategories ) {
printbCategories(category);
}
}
关于java - 类别/子类别 : How to get all subcategories(their subcategories too) for given category?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586835/