Java for循环内部列表的空间复杂度是多少?

Java for循环内部列表的空间复杂度是多少?,java,algorithm,Java,Algorithm,为同名循环创建新的列表时。是指计算一次空间复杂度,还是每次循环计算一次空间复杂度。比如说: for (int u = 0; u < 5; u++) { List<String> fileNameList = new ArrayList<String>(); fileNameList.add(concatinateFileWithTf); } for(int u=0;u

为同名循环创建新的
列表
时。是指计算一次空间复杂度,还是每次循环计算一次空间复杂度。比如说:

for (int u = 0; u < 5; u++) {

                List<String> fileNameList = new ArrayList<String>();
                fileNameList.add(concatinateFileWithTf);
  }
for(int u=0;u<5;u++){
List fileNameList=new ArrayList();
添加(concatatitefilewithtf);
}
根据前面的示例,我创建了
fileNameList
,每个循环都使用相同的名称。这是否意味着我创建了一个新的列表,每次都应该计算它的空间复杂度,或者它对这个列表进行恢复

这是否意味着我要创建一个新的列表,并且每次都要计算它的空间复杂度

来自
newarraylist()的javadoc

构造一个初始容量为10的空列表

所以,每次迭代都会为大小为1、容量为10的列表分配内存


询问smth是否仍不清楚

实际上,由于Java 8空ArrayList实例重用静态
对象[0]
数组,因此减少了内存占用@shsa,看看第156行和第195行,这可能会对您有所帮助。@Woland,如果它为每个循环创建新列表,那么从上一个循环生成的上一个列表会发生什么情况?它是从内存中删除还是分配多个同名列表?请您向我澄清一下?@shsa“上一个列表”生活在堆中,直到GC将其从内存中收集并移除。取决于GC算法。JVM在内部跟踪对象,而不是对象的名称。我不太清楚,但可以假设它使用hashcode或类似的smth。@shsa您可以从以下链接开始:)@Woland,这意味着如果我将值存储在for循环中声明的变量中,它每次都会创建此变量。比如说:'for(inti=0;i