Java绝对是新的根节点

时间:2012-12-14 15:37:47

标签: java tree instance treenode

我创建了一个节点类和一个树类。从main,我调用suffixTree t = new suffixTree(string);它在一个while循环中,所以它总是变量t。

问题是,我想读取一个输入文件并为每个字符串创建一个新树。显然,它不会创建新实例。

变量“t”在每次交互中都是相同的,但每次创建它时都应该是一个新实例。树构造函数有一个Node root = new Node();

这是一个复制的代码,我唯一做的就是从输入中读取并遍历树。

问题是,如果我输入mississippi $然后acacdcacd $它会添加到同一棵树并在我遍历时给出错误的结果。

提前致谢

1 个答案:

答案 0 :(得分:0)

您正在创建新实例,但是您在创建后立即丢弃它们,因为它们不会存储在任何地方,因此它们无法访问并标记为垃圾收集准备就绪。

看看以下内容:

// this is where the SuffixTree instances will end up
List<SuffixTree> suffixes = new ArrayList<SuffixTree>();


String[] strings = new String[3];
for (String string : strings) {
    // A new suffix tree is created here but if you don't do anything
    // with it then it is marked as garbage collectable when the closed
    // curly brace is reached
    SuffixTree t = new SuffixTree(string);


    // Now I'm pushing the object into the suffixes list: this will prevent
    // the loss of the object currently stored in the t variable
    suffixes.add(t);
}