Java: Как проверить все пути JTree для String

Я уже давно смотрю на это, но, похоже, не могу найти много информации об этом в Интернете. У меня есть 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
...

1 ответ

Сначала извлеките корень модели дерева:

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

Теперь, имея этот узел, обойдите все дерево и сохраните листья в вашей собственной структуре данных. Вы можете пройтись по дереву, используя rootNode.depthFirstEnumeration()работает через перечислитель и проверяет каждый элемент element.isLeaf(),

После того, как у вас есть все листья, найдите их пути: element.getPath(), Это дает вам массив узлов от корневого до конечного узла.

Теперь вы можете делать с ними все, что захотите.

Другие вопросы по тегам