我刚刚发布了以下问题,但我犯了一个错误。我想要的不是如何使用Eclipse,而是如何构建树状结构。元素可以包含多个子元素。 那么告诉我如何构建树;它实际上不是树,而是建立如下所示的结构。感谢
我在申请时遇到了这个问题,需要帮助。我有这种形式的服务器数据
食品苹果果实等。Table Chair pen School et ..
...
Food Mango Peer Melon等..
从左边读,我想做例如;在第一行,
Apple的食品父母
Apple的水果之父
种子的亲子
如果还有更多数据等等。我将使用循环从服务器迭代上述数据;实施例:::
+Food
Apple
Fruit
Seed
etc..
+Table
Chair
Pen
School
etc..
在上面的代码中,“Food”和“Table”属于同一级别。我的问题是我该如何开始。我用Google搜索了一整天但找不到我真正理解的东西。我怎样才能使“食物”成为父母,让苹果成为孩子,然后让Fruit成为苹果的孩子等等。告诉我如何构建树。
需要你的帮助。
由于
答案 0 :(得分:1)
您可以尝试使用javax.swing.tree.DefaultMutableTreeNode类。虽然它在swing包中,但它不包含任何图形代码。
答案 1 :(得分:1)
这是一个简单的实现,每个节点都有一个人类可读的String名称,并引用零个或多个子节点。
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.
答案 2 :(得分:0)
创建一个名为Node的类,make Node有一个节点的ArrayList和一个包含父节点的变量。就这样:
class Node {
private List<Node> children;
private Node parent;
public Node() {
children = new ArrayList<Node>();
}
//Constructors, accessors, mutators, etc.
}
这是迄今为止最简单的方法。你可以使节点成为一个抽象类,然后有椅子,桌子,学校等,所有这些都扩展了Node。
public class School extends Node {
public School() {
super();
}
public void addChild(Node node) {
children.add(node);
}
public void setParent(Node node) {
parent = node;
}
}
修改:我添加了一些示例方法,向您展示添加子项或设置父项时需要执行的操作。在其他一些类中,您可以创建School,Desk等对象,然后创建addChild和setParent方法,以便将子项添加到节点或设置节点的父项。