Создать имя объекта с помощью Loop из arraylist - PullRequest
0 голосов
/ 23 декабря 2018

Я ищу что-то, чтобы создать TreeView в моем приложении, но я не могу создать объект Node, используя цикл.

Я просто хочу создать динамическое имя объекта, которое я могу использовать в моем TreeView.

Вот библиотека, которую я использовал в своем приложении. TreeView

for(int i = 0; i< arrId.size(); i++){
        final Node i = new Node(getNodeText(i));
    }

Также я пытаюсь сделать это, и я получаю сообщение об ошибке "переменная" узла "уже объявлена ​​в области.

for(int loopI = 0; loopI< arrId.size(); loopI++){
            String node = "node"+arrId.get(loopI);
            final Node node = new Node(getNodeText(loopI));
        }

ЗдесьХорошо ли работает Статический код?

 final Graph graph = new Graph();
    final Node node1 = new Node(getNodeText());
    final Node node2 = new Node(getNodeText());
    final Node node3 = new Node(getNodeText());
    final Node node4 = new Node(getNodeText());
    final Node node5 = new Node(getNodeText());
    final Node node6 = new Node(getNodeText());
    final Node node8 = new Node(getNodeText());
    final Node node7 = new Node(getNodeText());
    final Node node9 = new Node(getNodeText());
    final Node node10 = new Node(getNodeText());
    final Node node11 = new Node(getNodeText());
    final Node node12 = new Node(getNodeText());

    graph.addEdge(node1, node2);
    graph.addEdge(node1, node3);
    graph.addEdge(node1, node4);
    graph.addEdge(node2, node5);
    graph.addEdge(node2, node6);
    graph.addEdge(node6, node7);
    graph.addEdge(node6, node8);
    graph.addEdge(node4, node9);
    graph.addEdge(node4, node10);
    graph.addEdge(node4, node11);
    graph.addEdge(node11, node12);

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Мне кажется, что вы должны использовать какую-то коллекцию здесь.Рассмотрим следующее:

final List<Node> allNodes = new ArrayList<>();
for (int i=0; i < arrId.size(); i++) {
    Node node = new Node(getNodeText(i));
    allNodes.add(node);
}

Затем, когда вы хотите построить свое древовидное представление:

final Graph graph = new Graph();
graph.addEdge(node.get(0), node.get(1));
graph.addEdge(node.get(0), node.get(2));
graph.addEdge(node.get(0), node.get(3));
graph.addEdge(node.get(1), node.get(4));
graph.addEdge(node.get(1), node.get(5));
graph.addEdge(node.get(5), node.get(6));
graph.addEdge(node.get(5), node.get(7));
graph.addEdge(node.get(3), node.get(8));
graph.addEdge(node.get(3), node.get(9));
graph.addEdge(node.get(3), node.get(10));
graph.addEdge(node.get(10), node.get(11));

Идея в том, что вы не должны пытаться нумеровать свои переменные самостоятельно.Большую часть времени, когда у вас есть такая необходимость, вы должны вместо этого использовать коллекцию.Большинство реализаций списка имеют встроенный счетчик, который можно использовать для нумерации элементов.

0 голосов
/ 23 декабря 2018

Возможно, вам следует переопределить метод getNodeText(), потому что вы хотите передать аргумент.Или просто не передавайте аргумент как getNodeText(i), потому что у этого метода уже есть счетчик.

private String getNodeText() {
    return "Node " + nodeCount++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...