嵌套循环导致OutOfMemory错误:Java堆空间

kjm*_*kjm 0 java arrays string arraylist

我正在尝试创建一个包含所有可能的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];
   }
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

我的循环有问题吗?或者是否有另一种方法来生成所需的数组列表?

Jas*_*n C 8

你有:

for(int m=0; m<= 1;)
Run Code Online (Sandbox Code Playgroud)

你需要:

for(int m=0; m<= 1; ++ m)
Run Code Online (Sandbox Code Playgroud)

否则,它最终最终填补了一个无限循环list4使用String[4]的,直到你耗尽内存.

通过不递增m,m保持为0并且循环条件始终为真.