我正在努力为未排序的LinkList创建一个Tree,其中每个Node包含三个实例变量
和LinkList是数据类型节点,只需要具有子和父关系的基本树,就不需要特定类型的树
答案 0 :(得分:0)
让我们以一个例子开始研究这个问题。
以下是提供给我们的清单数据
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
。
现在根据作者在评论中提供的信息,我假设这是一个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 -> {}
希望这有帮助!