【问题标题】:Nested loop leads to OutOfMemory Error: Java heap space嵌套循环导致 OutOfMemory 错误:Java 堆空间
【发布时间】:2013-08-16 19:16:02
【问题描述】:

我正在尝试创建一个字符串数组的数组列表,其中包含四个维度的 0 和 1 的所有可能组合。也就是说,[0,0,0,0] 是一种组合,而 [0,0,0,1] 是另一种组合。总共有 $2^4$ 组合,所以我使用了几个嵌套循环来生成这个数组列表。但是,当我尝试运行循环时,出现“内存不足”错误。看看:

String[] t4 = new String[4]; 

ArrayList<String[]> list4 = new ArrayList<String[]>();

for(int i=0; i<= 1; i++)
{
String count = Integer.toString(i);    
t4[0]=count;
list4.add(t4); 
 for(int j=0; j<= 1; j++)
 {
 String count1 = Integer.toString(j);    
 t4[1]=count1;
 list4.add(t4);
  for(int k=0; k<= 1; k++)
  {
  String count2 = Integer.toString(k);    
  t4[2]=count2;
  list4.add(t4); 
   for(int m=0; m<= 1;)
   {
   String count3 = Integer.toString(m);    
   t4[3]=count3;
   list4.add(t4);
   t4 = new String[4];
   }
  }
 }
}

我的循环有问题吗?还是有其他方法可以生成所需的数组列表?

【问题讨论】:

  • 您忘记在 m for 循环中增加 m。这是一个无限循环。

标签: java arrays string arraylist


【解决方案1】:

你有:

for(int m=0; m<= 1;)

你需要:

for(int m=0; m<= 1; ++ m)

否则这是一个无限循环,最终会用String[4] 填满list4,直到内存不足。

通过不增加mm 保持在 0 并且循环条件始终为真。

【讨论】:

  • 很好,也很快。
【解决方案2】:

你不要修改m

改变这个

for(int m=0; m<= 1;)

for(int m=0; m<= 1;m++)

【讨论】:

    【解决方案3】:

    在您的内部“FOR”循环中,您忘记增加变量“m”,因此它进入了无限循环。

    【讨论】:

      【解决方案4】:

      问题在于没有 m++。此外,循环应如下所示:

      for(int i=0; i<= 1; i++)
      {
      String count = Integer.toString(i);    
       for(int j=0; j<= 1; j++)
       {
       String count1 = Integer.toString(j);    
        for(int k=0; k<= 1; k++)
        {  
        String count2 = Integer.toString(k);    
         for(int m=0; m<= 1;m++)
         {
         String count3 = Integer.toString(m);    
         t4[0]=count;   
         t4[1]=count1;
         t4[2]=count2;    
         t4[3]=count3;
         list4.add(t4);
         t4 = new String[4];
         }
        }
       }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多