下面是一个二级分类目录的代码示例。
其中OneCategory是一级分类的集合,TwoCategory是二级分类的集合。categoryEntity是分类的实体类,添加了属性名为children的一个categoryEntity的List集合。
思路:
for循环遍历一级分类,然后嵌套for循环二级分类。
二级分类的for循环里面:用if判断二级分类的父id是否等于当前循环的一级分类的id。
如果等于,则将当前的二级分类添加到一个新的集合中。

二级分类循环外面,一级分类循环里面:
将这个数组放入一级分类集合的children属性中

我发现的问题是:
for循环,只有执行完毕才可以更新其中的集合数据。
比如将新集合放在一级分类循环外面,
在一级分类循环中,如果将集合的值(此时是有值的)赋值给当前一级分类的children属性。
然后清空该集合。原因是:如果不清空,i=1的二级分类循环后的值也会在被添加在此集合中,此时就会导致i=1的一级分类的children值是包含i=0的children值
执行清空语句后,会发现此时所有的一级分类的children值是空的。

由上面可以推导出:for循环中,数据是一体的无法在其中做数据的多次修改。只会保留最后的修改数据
下面实例的代码时,将每一次一级分类循环时,都创建一个数组,这样每次只会使用自己的数组,但是消耗的内存可能会比较大。
暂时没有好的想法

如下代码

for (int i = 0; i <OneCategory.size() ; i++) {

            CategoryEntity categoryEntity = OneCategory.get(i);    //获取当前集合的i号元素的对象

            ArrayList<CategoryEntity> OneChildrenList = new ArrayList<>();    //新建一个集合用于存放二级目录

            for (int j = 0; j <TwoCategory.size() ; j++) {

                if (TwoCategory.get(j).getParentCid().equals(categoryEntity.getCatId())){  //  一级分类的id是否等于二级分类的父id
                    OneChildrenList.add(TwoCategory.get(j));  // 等于,就添加该二级分类元素到集合中
                }
            }

            categoryEntity.setChildren(OneChildrenList);  // 最后将这个数组放入一级分类集合的children属性中

        }
(```