Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java绝对是新的根节点_Java_Tree_Instance_Treenode - Fatal编程技术网

Java绝对是新的根节点

Java绝对是新的根节点,java,tree,instance,treenode,Java,Tree,Instance,Treenode,我创建了一个节点类和一个树类。在main中,我调用后缀树t=new后缀树(string);它在while循环中,所以它总是变量t 问题是,我想读取一个输入文件,并为每个字符串创建一个新的树。显然,它不会创建新实例 变量“t”在每次交互中都是相同的,但每次创建时都应该是一个新实例。树构造函数有一个节点根=new Node() 这是一个复制的代码,我所做的唯一一件事就是读取输入并遍历树 问题是,如果我键入mississippi$,那么它将添加到同一棵树上,并在遍历它时给出错误的结果 提前感谢您正在创

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

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

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

这是一个复制的代码,我所做的唯一一件事就是读取输入并遍历树

问题是,如果我键入mississippi$,那么它将添加到同一棵树上,并在遍历它时给出错误的结果


提前感谢

您正在创建新实例,但在创建后立即丢弃它们,因为它们不存储在任何位置,因此无法访问,并标记为准备进行垃圾收集

请看以下内容:

// 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);
}
//这就是后缀树实例将结束的地方
列表后缀=新的ArrayList();
字符串[]字符串=新字符串[3];
for(字符串:字符串){
//这里创建了一个新的后缀树,但如果您不执行任何操作
//有了它,当服务器关闭时,它被标记为垃圾回收
//到达曲括号
后缀树t=新的后缀树(字符串);
//现在我将对象推到后缀列表中:这将防止
//当前存储在t变量中的对象丢失
后缀。添加(t);
}

请更具体一些。什么不是新实例?请在此处粘贴相关代码。告诉我们代码应该做什么,以及它应该做什么。不要显示来自其他人的代码,显示您的代码,有问题的代码。好的,我添加了代码。基本上与作者相同,但是使用遍历函数和从stdin读取。创建一个新的局部变量t1,用一个新的后缀树初始化它,然后完全忘记创建的对象。你应该对t1做些什么,但只有你知道。我知道,但关键是,我不需要后缀树,我想做它,遍历并打印结果。我不需要储存它,因为我再也不会使用它了。但是,我不想使用相同的变量基于新字符串创建新树。你可以创建一个新的后缀树(string),我不会使用t1,也不会使用后缀树的任何结果,因为我在遍历它之后正在打印它。我真正想要的是在t1上几乎是免费的,我希望垃圾收集器将树丢弃,这样我就可以在同一个变量上再次使用它。我试过System.gc(),但没有用。我正在考虑改变C++,这样我就可以调用免费(T1)之后,我可以在下一个循环使用它,为什么要创建它?在爪哇,自由(T1)是在封闭的卷曲括号达到时隐式地完成的。调用System.gc()您建议JVM现在是执行垃圾收集和释放t1使用的堆空间的好时机。这是因为您从未清理str变量!!!!!在调用traverse之后添加以下内容:
str=”“