【发布时间】:2013-04-21 12:23:06
【问题描述】:
在我的 java 代码中,我创建了一棵树,其中树中的一个节点是 Node 类型的。 该节点具有 Node 类型的名称、属性和子节点.我正在使用db4o 来存储树。我通过简单地存储树的根节点来做到这一点。但是,我发现 db4o 并没有存储对象节点的所有子节点。当我从数据库中检索根并遍历树时,我最多只能遍历树的 3 层。似乎较低级别的子节点丢失了。有人可以帮助我,这样我就不会丢失任何节点吗?谢谢。
下面是我的代码:
Node node1= new Node("root","this is the root",new ArrayList<Node>());
Node node2= new Node("zaid","123",new ArrayList<Node>());
Node node3= new Node("saad","999",new ArrayList<Node>());
Node node4= new Node("safia","555",new ArrayList<Node>());
Node node5= new Node("ahmad","000",new ArrayList<Node>());
node1.getChildren().add(node2);
node2.getChildren().add(node3);
node3.getChildren().add(node4);
node4.getChildren().add(node5);
ObjectContainer db= Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(),"db");
db.store(node1);
Node node= new Node("root",null,null);
List<Node> result= db.queryByExample(node);
node= result.get(0);
System.out.println(node.getName()
+","+node.getChildren().get(0).getName()
+","+node.getChildren().get(0).getChildren().get(0).getName()
+","+node.getChildren().get(0).getChildren().get(0).getChildren().get(0).getName());
我在最后一行代码中遇到异常:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
【问题讨论】:
-
是什么让您认为您正在遍历树的 3 个级别?
-
我不确定这个信息是否准确(遍历3层后总是出现错误),但我完全确定在尝试显示第4层节点后出现错误树,遍历从根开始,并为每个孩子重复。
-
你没有执行提交?