是否可以在Java中创建对象树?

时间:2011-09-02 01:26:01

标签: java tree

我正在尝试用Java创建一个Objects树。我还想使用一个Java类,它可以很容易地从树中添加或删除节点。什么是最适合这个目的的班级?

示例:这是一个对象数组。数组顶部的对象是字符串“world”。叶子是整数,我想添加字符串“This is at at(world,0,0)!”作为“(世界,0,0)”的叶子。什么Java类最适合这个目的?

"world"
  /\
 0  1
/ \  /\
0 1  0 1

2 个答案:

答案 0 :(得分:10)

制作自己的。这很简单。超级超级容易:

public class Tree{
    public Node root;
}

public class Node{
    public ArrayList<Node> children;
    public Node parent;
    public String value;
}

现在,将一个带有整数序列的字符串值放在这样的位置:

public class Tree{
    public String put(String value, int[] path){
        Node current = root;
        for(int i=0;i<path.length;i++){
            if(current.children.get(i)==null){
                current.children.add(i, new Node());
            }
            current = current.children.get(i);
        }
        String ret = current.value;
        current.value = value;
    }
}

获取值将类似,除非您不会使用给定值覆盖当前值。

put用英语做什么的说明:

  • 转到当前节点的n th 子节点,其中n是路径中的下一个值。
  • 如果孩子不存在,请创建它。
  • 重复直到到达路径的末尾。
  • 返回当前值(可选)
  • 将值设置为新值。

所以使用它看起来像这样:

Tree myTree = new Tree();
myTree.root = new Node();
int[] path = {0, 0, 0};
myTree.put("hi", path);
System.out.println(myTree.get(path));

你将在你的控制台中获得“嗨”。

答案 1 :(得分:2)

这听起来有点像家庭作业。是吗?如果是这样的话,最好先做好准备。

Java中没有真正的数据结构可以满足您的需求,因为您似乎对直接树操作感兴趣。 Java集合更多地是关于提供的抽象数据类型(List,Set,Map)而不是后备实现的细节;为不同的性能特征提供了不同的实现方式。

总之,你最好自己编写。除非你真正关心的是从一个键映射到一个值,否则任何Map实现都会很好。