2009-08-03 12 views
0

auf meine Frage mit Bezug zu how to build a tree-like structure, die Daten, die ich vom Server empfangen, sind in Arrays wie folgt aus: {School Chair Table Chalk}Wie durchlaufe ich ein Array in Java?

Wie kann ich durch diese Schleife so dass:

  • School wird Eltern von Chair
  • Chair wird Eltern von Table
  • Table wird Eltern von Chalk
+7

Sie könnten den Fragentitel verbessern, wenn Sie nicht möchten, dass die Leute annehmen, dass Sie Java von Grund auf neu lernen. – skaffman

Antwort

1

eine Node-Klasse Angenommen, die einen Konstruktor anbietet, die den Knoten des Wert als Argument und Methode addChild akzeptiert, der einen anderen Knoten als Kind fügt hinzu und setzt sich als die Eltern des Kindes, könnte der Code wie folgt aussehen:

Node currentNode = null; 
for(String value: array) { 
    Node node = new Node(value); 
    if(currentNode != null) { 
     currentNode.addChild(node); 
    } 
    currentNode = node; 
} 
+0

Ich sollte hinzufügen, dass dies nicht den Wurzelknoten verfolgt. Dies ist möglicherweise kein Problem, abhängig davon, wie die Knotenklasse entworfen und verwendet wird. Wenn Sie jedoch die Wurzel verfolgen müssen, können Sie leicht etwas wie sonst hinzufügen {rootNode = node; } zum obigen Code. Alternativ können Sie das erste Element des Arrays vor der Schleife behandeln. – sepp2k

1

Sind sie immer in einer Liste, die hierarchisch wird? Ich würde vorschlagen, eine einfache Wrapper-Klasse ... und meine Syntax verzeihen, wie ich habe jetzt eine Zeit lang in C# gespielt:

public class Node { 
    public string description; 
    public Node child; 

    public Node(List<string> descriptions) { 

     this.description = descriptions.RemoveAt(0); 
     if (descriptions.Count > 0) { 
      this.child = new Node(descriptions); //create child node with remaining items 
     } 
    } 
}  

Dies wird Thema nehmen, wenn Sie in einer Liste übergeben w/null Elemente der Konstruktor, aber das ist leicht zu beheben.

Verwandte Themen