1

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

像这样的东西

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
--john
---example.java
-assignment2
--a2
---sean
----assignment.java
---mark
----assignment.java

所以给定下面的树它应该只在下面的路径中搜索单词

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
...
4

1 回答 1

4

首先,获取树模型的根:

rootNode = (DefaultMutableTreeNode)tree.getModel().getRoot()

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

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

现在你可以对他们做任何你想做的事。

于 2012-09-11T10:17:50.357 回答