Java:如何检查字符串的整个JTree路径

Java:如何检查字符串的整个JTree路径,java,swing,jtree,treemodel,Java,Swing,Jtree,Treemodel,我一直在看这个有一段时间了,但我似乎在网上找不到太多关于它的信息。我有一个JTree和一个字符串列表。我只想搜索jtrees的最低级别,因此不会搜索树中的每个节点,只搜索每个字符串的最低节点,如果我搜索的字符串位于最低节点的路径中,则将该字符串添加到列表中 像这样的 public List<String> searchLowestNodes(List<String> wordsToSearchFor){ List<String> matches = n

我一直在看这个有一段时间了,但我似乎在网上找不到太多关于它的信息。我有一个JTree和一个字符串列表。我只想搜索jtrees的最低级别,因此不会搜索树中的每个节点,只搜索每个字符串的最低节点,如果我搜索的字符串位于最低节点的路径中,则将该字符串添加到列表中

像这样的

public List<String> searchLowestNodes(List<String> wordsToSearchFor){
    List<String> matches = new ArrayList<>;
    for(String word: wordsToSearchFor){
        // i do not know how to get the lowest node for each path
        if(path.contains(word)){
            matches.add(word);
        }
        //keep looping for all paths
     }
     return matches;
}
因此,给定下面的树,它应该只在下面的路径中搜索单词

root>assignment1>paul>example.java
root>assignment1>john>example.java
root>assignment2>a2>sean>assignment.java
root>assignment2>a2>mark>assignment.java
我不想补充

root>assignment1
root>assignment1>paul
...

首先,获取树模型的根:

rootNode = (DefaultMutableTreeNode)tree.getModel().getRoot()
现在有了这个节点,遍历整个树并将叶子存储在您自己的数据结构中。您可以使用rootNode.depthFirstEnumeration遍历树,运行枚举器并检查每个元素element.isLeaf

拥有所有叶子后,获取它们的路径:element.getPath。这将为您提供从根节点到叶节点的节点数组


现在,您可以对它们执行任何操作。

首先,获取树模型的根:

rootNode = (DefaultMutableTreeNode)tree.getModel().getRoot()
现在有了这个节点,遍历整个树并将叶子存储在您自己的数据结构中。您可以使用rootNode.depthFirstEnumeration遍历树,运行枚举器并检查每个元素element.isLeaf

拥有所有叶子后,获取它们的路径:element.getPath。这将为您提供从根节点到叶节点的节点数组


现在,您可以对它们执行任何操作。

如果一棵树有一个分支节点和两个叶节点,那么两个叶节点中哪一个是“最低的”?如果它有两个叶节点,我希望它在两个叶节点中搜索单词“最低的节点”,那么“最低的节点”是指每个叶节点吗?某些叶节点在树中可能比其他叶节点处于更“浅”或“不深”的层次。路径到底是什么以及如何获得它?是的,这是正确的。我们不太确定如何解释ti,因为在此之前从未使用过JTree,我将始终保持相同的文件夹结构,因此叶不应比其他叶更浅,但可能会发生这样的情况:如果一棵树有一个分支节点和两个叶节点,那么两个叶节点中哪一个是“最低的”?如果它有两个叶,我希望它在两个叶中搜索单词,那么“最低的节点”是指每个叶节点?某些叶节点在树中可能比其他叶节点处于更“浅”或“不深”的层次。路径到底是什么以及如何获得它?是的,这是正确的。我们不太确定如何解释ti,因为在此之前从未使用过JTree,我会在整个过程中保持相同的文件夹结构,所以Leaf不应该比其他文件夹更浅,但可能是Yes,但child是int,你如何比较angaint和int?看到评论,可能我不理解你的问题。我的答案给你树的第二层来检查。。。这就是你所说的“最低”吗?不管怎样,你能发布你是如何填充你的树的吗?也许这会有帮助。我在上面添加了一个例子,但是child是int,你如何比较angaint和int?看到这些评论,也许我不理解你的问题。我的答案给你树的第二层来检查。。。这就是你所说的“最低”吗?不管怎样,你能发布你是如何填充你的树的吗?也许这会有帮助。我在上面添加了一个例子