Java关系树自下而上

时间:2015-10-20 00:50:40

标签: java tree treeview controlsfx

嘿伙计们,我一直在努力找出问题的解决方案。我想在我的JavaFx应用程序中实现ControlsFX CheckTreeView。基本上我有一个字符串列表,其格式与网站上的导航栏相匹配。到目前为止,示例Admin.Config.User将是其中一个字符串。我已经解析了这些String并将它们转换为LinkedHashMap,其中每个父节点都有子节点,这些子节点将存储每个子节点的列表以及子节点的CheckBoxTreeItem。

创建CheckTreeView对象时,可以传递Root CheckBoxTreeItem或不带参数进行初始化。

CheckBoxTreeItem Documentation

我很难想象如何构建一个树底到一个根CheckBoxTreeItem。

// Contains the Nodes with children and corresponding CheckBoxTreeItems
LinkedHashMap<String, LinkedHashMap<String, CheckBoxTreeItem<String>>> navPaths = new LinkedHashMap<String, LinkedHashMap<String, CheckBoxTreeItem<String>>>();

// Was thinking about using this as a check to make sure duplicates are not added
LinkedHasMap<String, String> alreadyAdded = new LinkedHashMap<String, String>

// Check Tree View
CheckTreeView<String> checkTreeView = new CheckTreeView<>();

for(String pathNode : navPaths.keySet()){

    for(String childName : testPaths.get(pathNode).keySet()){

        // Completely lost once I get here
    }
}

// Set built root
//checkTreeView.setRoot();

我真的很挣扎于这个概念,以至于我已经走得很远,如果看来我没有付出任何努力,我会道歉。在过去的12个小时里,我一直在考虑这个概念,而我却一点都没有。如果有人能给我一些帮助,那将非常感谢。

1 个答案:

答案 0 :(得分:0)

我建议摆脱链接的哈希映射,直接解析为CheckBoxTreeItem(它可能是此任务所需的唯一数据结构)和(可能)使用递归算法而不是迭代算法。

这是一个insert algorithm for a tree,在你的解析例程中使用类似的东西直接将你解析的每个元素插入CheckBoxTreeItems定义的树中。请注意,您无法准确使用该算法,您将开发出适合您特定需求的算法。

我想我真的不应该回答这个问题,因为它还不太清楚,但是这些信息太长了以至于评论......至少它可能让你开始走另一条道路。