Строковый путь к древовидной структуре данных (GWT) - PullRequest
0 голосов
/ 23 ноября 2011

Моя проблема заключается в следующем ... Я получаю строковый путь (например, x1 / x2 / x3 / Xn, Xn / x2 / x3 и т. Д.) (Например, String path = Project.getName ()).В общем, я могу иметь любой тип пути (любой уровень и любую глубину) .Я пытаюсь найти способ преобразовать это в структуру данных, чтобы я мог реализовать это в моем gwt CellTree.До сих пор я реализовал CellTree из этого примера GWT Cell tree, как использовать? .

Поскольку я понятия не имею об уровне или глубине, я немного растерялся... Я думаю, что мне нужно пойти с рекурсивной функцией, которая разделяет мой путь строки, затем добавляет их, но проверяет, существуют ли они уже, и т.д ...

Я также просмотрел этот вопрос Построить деревоструктура из списка строковых путей .Но я новичок в java и шаблонах проектирования, так что любые указатели или кусочки кода (пример) могут помочь.

1 Ответ

0 голосов
/ 20 декабря 2011
    String fullPath = mystringpath;
    String[] paths = fullPath.split("/");
    String combinedPaths = "";
    Node current = this.root;

    // We will never process the last node since it could be a repository
    // or a wildcard. The last step of this process would be doing that.
    for (int i = 0; i < paths.length - 1; i++) {
        combinedPaths += "/" + paths[i];
        if (this.collected.containsKey(combinedPaths)) {
            current = this.collected.get(combinedPaths);
        }
        else {
            String name = paths[i];
            Node childItem = new Node(name);
            current.addItem(childItem);
            current = childItem;
            this.collected.put(combinedPaths, current);
        }
    }

    // Process the last node since it represents the repository name.
        String name = paths[paths.length - 1];
        Node leafItem = new Node(name);
        combinedPaths += "/" + name;
        current.addItem(leafItem);
        current = leafItem;
        this.collected.put(combinedPaths, current);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...