我已经看了一段时间了,但我似乎真的无法在网上找到很多相关信息。我有一个 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
...
最佳答案
首先,获取树模型的根:
rootNode = (DefaultMutableTreeNode)tree.getModel().getRoot()
现在有了这个节点,遍历整棵树并将叶子存储在你自己的数据结构中。您可以使用 rootNode.depthFirstEnumeration()
遍历树,遍历枚举器并检查每个元素 element.isLeaf()
。
获得所有叶子后,获取它们的路径:element.getPath()
。这为您提供了一个从根节点到叶节点的节点数组。
现在您可以随心所欲地使用它们。
关于Java:如何检查字符串的整个 JTree 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367432/