我正在尝试用Java创建一个Objects树。我还想使用一个Java类,它可以很容易地从树中添加或删除节点。什么是最适合这个目的的班级?
示例:这是一个对象数组。数组顶部的对象是字符串“world”。叶子是整数,我想添加字符串“This is at at(world,0,0)!”作为“(世界,0,0)”的叶子。什么Java类最适合这个目的?
"world"
/\
0 1
/ \ /\
0 1 0 1
答案 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
用英语做什么的说明:
所以使用它看起来像这样:
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实现都会很好。