1
1
这是一个很好的方法,但它比必须的更天真。 另一条路线只需要线性时间。SomeData是否具有唯一标识它的特性?我假设是这样;这可能是某些数据本身正确地实现了equals()和hashCode()。
假设有一种方法
然后我们把这些行向前读:
|
2
1
为每个节点重新读取整个文件(或者更糟的是查询数据库)相当昂贵。我宁愿你边看单子边建树。这是我的2美分
如果您遵循这一点,在列表上的迭代结束时,您应该拥有:
希望这有帮助。 |
3
1
你可以一次建树。您可以对表执行第一次传递以生成所有节点(从名称到节点构建哈希表),然后执行另一次传递,在其中可以在两个节点之间添加父子关系(将父指针添加到子节点,并将子节点添加到父节点中的子节点列表)。 |
4
1
从数据库中获取数据后,可以根据 起源 属性。这样,在每次搜索节点的子节点时,就不需要遍历整个列表。 编辑: 当列表被排序时,当您找到您要查找的所有子项时,可以停止对列表的迭代。例如,当拥有根“A”并开始在此列表中搜索其子级时:
|
5
1
|