java - 类别/子类别 : How to get all subcategories(their subcategories too) for given category?

标签 java list loops for-loop while-loop

有一类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/

相关文章:

java - 是否可以编写一个标记接口(interface)

Java,我这个关键检测类建对了吗?

java - 将 java.sql.Date 和 java.util.Date 转换为 org.joda.time.LocalDate

python - 字符串化列表到两个单独的列表

python - 如何在python中创建高效的同现?

bash 循环遍历文件路径列表 - 发送到 ffmpeg 时删除字符

vba - 对于开始到结束循环,结束变量更改中间循环

java - 使用 URL.openStream (Java) 打开 url

允许推送、弹出和切换值的列表

python - Matplotlib 和 Python 在二维上循环