0

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

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

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

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

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

提前致谢

4

1 回答 1

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);
}
于 2012-12-14T15:58:36.117 回答