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 に答える