我正在努力为未排序的LinkList创建一个Tree,其中每个Node包含三个实例变量
和Linked List是数据类型节点,只需要具有子和父关系的基本树,不需要特定类型的树
让我们以一个例子开始研究这个问题。
以下是提供给我们的清单数据
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 -> {}
希望这可以帮助!