2015-10-20 80 views
0

嗨,我一直在努力找出一个解决我的问题。我想在我的JavaFx应用程序中实现一个ControlsFX CheckTreeView。基本上我有一个字符串列表,它们的格式与网站上的导航栏相匹配。到目前为止,示例Admin.Config.User将是字符串之一。我已经解析这些字符串并将它们改建LinkedHashMap的地方有将存储每个孩子和孩子的CheckBoxTreeItem名单孩子每个父母。Java关系树自下而上

在创建CheckTreeView对象,你可以通过根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个小时里,我一直在思考这个概念,我只是没有想到它。如果任何人可以给我提供一些帮助,那将是非常感谢。

回答

0

我建议摆脱链接的哈希映射中,直接解析成CheckBoxTreeItem(它可能是你需要为这个任务的唯一数据结构),并使用递归算法(可能),而不是重复的。

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

我想我真的不应该回答这个问题,因为它是很清楚,但信息是为评论太长......至少它可能让你开始下降的另一个路径。