Java 建造树状结构

Java 建造树状结构,java,Java,我刚刚发布了以下问题,但我犯了一个错误。我想要的不是如何使用Eclipse,而是如何构建树状结构。一个元素可以有多个子元素。 让我看看如何建造这棵树;它实际上不是树,而是构建结构,如我在下面所示。谢谢 我的申请有这个问题,需要帮助。我从服务器获取了此表单中的数据 食品、苹果、水果、种子等 桌椅钢笔学校等 食品:芒果、西瓜等 从左边读,我想把它改成eg;在第一排, 苹果的主食 苹果果实的亲本 种子的果亲本 如果有更多的数据等等。。我将通过循环从服务器创建上述数据;示例::: +Food

我刚刚发布了以下问题,但我犯了一个错误。我想要的不是如何使用Eclipse,而是如何构建树状结构。一个元素可以有多个子元素。 让我看看如何建造这棵树;它实际上不是树,而是构建结构,如我在下面所示。谢谢

我的申请有这个问题,需要帮助。我从服务器获取了此表单中的数据

食品、苹果、水果、种子等

桌椅钢笔学校等

食品:芒果、西瓜等

从左边读,我想把它改成eg;在第一排,

苹果的主食

苹果果实的亲本

种子的果亲本

如果有更多的数据等等。。我将通过循环从服务器创建上述数据;示例:::

+Food
    Apple
       Fruit
           Seed
            etc..

+Table
      Chair
          Pen
             School
              etc..
在上述代码中,“食品”和“餐桌”属于同一级别。我的问题是如何开始。我在谷歌上搜索了一整天,但找不到我真正理解的东西。例如,我怎样才能让“食物”成为父母,让苹果成为自己的孩子,然后让水果成为苹果的孩子等等。告诉我如何建造这棵树

我需要你的帮助


谢谢

创建一个名为Node的类,并使Node具有节点的ArrayList和包含父节点的变量。因此:

class Node {

private List<Node> children; 
private Node parent;

public Node() {
    children = new ArrayList<Node>(); 
}
//Constructors, accessors, mutators, etc.

}

编辑:我添加了一些示例方法,向您展示了添加子项或设置父项所需的操作。在其他一些类中,您可以创建School、Desk等对象,然后创建addChild和setParent方法,以便向节点添加子节点或设置节点的父节点。

您可以尝试使用javax.swing.tree.DefaultMutableTreeNode类。当它在swing包中时,它不包含任何图形代码。

这里是一个简单的实现,其中每个节点都有一个人类可读的字符串名称,并引用零个或多个子节点

public interface Node {
  String getName();

  void addChild(Node node);

  List<? extends Node> getChildren();
}

public class NodeImpl implements Node {
  private final String name;
  private final List<Node> nodes;

  public NodeImpl(String name) {
    this.name = name;
    this.nodes = new LinkedList<Node>();
  }

  public String getName() {
    return name;
  }

  public void addChild(Node node) {
    nodes.add(node);
  }

  public List<? extends Node> getChildren() {
    return Collections.unmodifiableList(nodes);
  }
}

谢谢你的回复。如果我正在添加椅子、桌子等。。他们如何成为彼此的孩子。你能给我解释一下内部工作原理吗。事实上,这是我第一次使用它,所以我完全糊涂了。给我解释一下,以便我能很好地理解它。谢谢我真的非常感谢你。我现在明白你的意思了。多谢各位。我还有一个问题,很抱歉打扰你。我从服务器获得的数据是这样的数组:[学校桌椅书籍]我的问题是如何循环遍历数据,以便创建树状结构,以便:学校成为“表格”的父级“椅子”的父级“书籍”的父级。我发现很难使用for()循环或while()循环遍历元素来创建树结构。我需要你的建议。感谢您的帮助。使用prevNode等变量跟踪数组中的上一个元素。当您第一次开始循环时,prevNode为空,因此请创建一个学校节点,不要设置父节点(因为学校没有父节点)。另外,将prevNode设置为等于School。然后,当您再次循环时,将表的父级设置为prevNode(等于School),并将表添加到学校中的子级列表中。如果你在for循环中完成这一切,那么它应该对数组中的所有元素都有效。我也非常感谢你的回复。我从服务器获得的数据是这样的数组:[学校桌椅书籍]我的问题是如何循环遍历数据,以便创建树状结构,以便:学校成为“表格”的父级“椅子”的父级“书籍”的父级。我发现很难使用for()循环或while()循环遍历元素来创建树结构。我需要你的建议。谢谢你的帮助。很好,我一直想知道pro是如何用Java设计他们的树结构的
public interface Node {
  String getName();

  void addChild(Node node);

  List<? extends Node> getChildren();
}

public class NodeImpl implements Node {
  private final String name;
  private final List<Node> nodes;

  public NodeImpl(String name) {
    this.name = name;
    this.nodes = new LinkedList<Node>();
  }

  public String getName() {
    return name;
  }

  public void addChild(Node node) {
    nodes.add(node);
  }

  public List<? extends Node> getChildren() {
    return Collections.unmodifiableList(nodes);
  }
}
Node root = new Node("Root"); // Create root node.
Node food = new Node("Food"); // Create level 1 child nodes.
Node table = new Node("Table");

root.addChild(foo); // Add level 1 child nodes to root.
root.addChild(table);

Node apple = new Node("Apple"); // Create and add other child nodes.
food.addChild(apple); // etc.