来一个简单的三级分类

Step 1:定义Category类的属性

public class Category {
    private int id;
    private int parentId;
    private String name;
    private List children;
    // getters and setters
}

 来一个简单的三级分类_第1张图片

Step 2:创建一个递归方法,用于将分类列表转换为嵌套的树形结构 


    public static List bulidCategoryTree(List categoryList) {
        List res = new ArrayList<>();
        Map map = new HashMap<>();
        for (Category category : categoryList) {
            map.put(category.getId(), category);
        }
        for (Category category : categoryList) {
            //根据父id取出每一个category
            Category parent = map.get(category.getParentId());
            //进行判断,如果得不到parent说明parentid为0,为一级分类
            if (parent==null) {
                res.add(category);
            } else {
                //负责为其他分类,如果为其他分类首先还要判断是否chilldren为null
                if(parent.getChildren()==null){
                    parent.setChildren(new ArrayList<>());
                }
                parent.getChildren().add(category);
            }

        }

        return res;
    }

来一个简单的三级分类_第2张图片

Step 3:编写测试类 

     

List categoryList = new ArrayList<>();
    categoryList.add(new Category(1, 0, "电器"));
    categoryList.add(new Category(2, 0, "服装"));
    categoryList.add(new Category(3, 0, "食品"));
    categoryList.add(new Category(4, 1, "家电"));
    categoryList.add(new Category(5, 1, "手机"));
    categoryList.add(new Category(6, 2, "男装"));
    categoryList.add(new Category(7, 2, "女装"));
    categoryList.add(new Category(8, 7, "裙子"));
    categoryList.add(new Category(9, 7, "衣服"));
    categoryList.add(new Category(10, 3, "零食"));
    List tree = CategoryUtils.buildCategoryTree(categoryList);
    System.out.println(tree);

来一个简单的三级分类_第3张图片

4.结果如下:

来一个简单的三级分类_第4张图片

 

你可能感兴趣的:(java,开发语言)