让我们通过一个例子开始研究这个问题。
以下是提供给我们的列表数据
Pojo{id=4, parent_id=2, name=C}
Pojo{id=5, parent_id=2, name=D}
Pojo{id=7, parent_id=3, name=E}
Pojo{id=6, parent_id=3, name=F}
Pojo{id=8, parent_id=6, name=FB}
Pojo{id=1, parent_id=0, name=root}
Pojo{id=2, parent_id=1, name=A}
Pojo{id=3, parent_id=1, name=B}
假设我们已经获得了列表的大小,即上述情况下的7。
现在根据作者在 cmets 中提供的信息,我假设这是一个 Pojo 对象列表,即List<Pojo> pojoObjects;
现在我们将把树(图)存储在这样的数据结构中 -
ArrayList<ArrayList<Pojo>> finalTree = new ArrayList<ArrayList<Pojo>>(7);
现在我们可以遍历我们的列表 - pojoObjects,然后我们可以检查父 ID 是什么,并将这个特定的 Pojo 对象添加到该列表元素。
类似这样的:-
for(Object pojo: pojoObjects) {
int parentId = pojo.parent_id;
ArrayList<Pojo> atThisIndex = finalTree[parentId];
atThisIndex.add(pojo);
finalTree[parentId] = atThisIndex;
}
在这个循环之后,我们的输出将如下所示:-
0 -> Pojo{id=1, parent_id=0, name=root}
1 -> Pojo{id=2, parent_id=1, name=A} , Pojo{id=3, parent_id=1, name=B}
2 -> Pojo{id=4, parent_id=2, name=c} , Pojo{id=5, parent_id=2, name=D}
3 -> Pojo{id=7, parent_id=3, name=E} , Pojo{id=6, parent_id=3, name=F}
4 -> {}
5 -> {}
6 -> {}
7 -> {}
希望这会有所帮助!