java - 添加到Arraylist会覆盖其余部分,这是为什么

标签 java arraylist multidimensional-array

这个问题是这个问题的后续问题..

Add Multidimensinal array to an array list using Java

  int tmp;
  int[][] Key = new int [TopSubKey.length+BottomSubKey.length][TopSubKey.length];
  int[][] KeyChoiceTable = {{14,17,11,24,1,5},{3,28,15,6,21,10},{23,19,12,4,26,8}}     
 int [][] KeySelection = new int [KeyChoiceTable.length][KeyChoiceTable[0].length];

List<int [][]> list = new ArrayList<int [][]>();


 int row,col,x;

for(int l =0;l<3;l++) {

 for(int i=0;i<KeyChoiceTable.length;i++){
    for(int j=0;j<KeyChoiceTable[0].length;j++){
         row = 0;
         col = 0;
         x = KeyChoiceTable[i][j];
         while(x>7){x=x-7; row=row+1;}
         col = x-1;

     KeySelection[i][j] = Key[row][col];
     }
 }
 list.add(KeySelection);
 System.out.print(list.size());
  }

如果你能看一下..因为这个问题看起来很愚蠢,但它杀了我。

Lopp 运行了 2 次,我对最后一行的期望是每个循环将 2D 数组存储在列表中索引 0 处,因此第二个循环将第二个 2D Keyselection 存储在列表中索引 1 处。 每当我添加到数组列表(列表)时,新的添加都会覆盖所有其他条目,导致所有条目与上一个条目相同..我一整天都在尝试,如果我使用 vector 或堆栈,它是一样的..发生了什么事?

最佳答案

如果要存储对象数组,则应该为每个条目创建一个新对象。不要添加对象,然后更改某些实例值,然后再次添加它们,这也会更改所有其他条目。 (阅读有关 Java 面向对象方法的更多信息)。

关于java - 添加到Arraylist会覆盖其余部分,这是为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435859/

相关文章:

java - JAVA取N个数组并将其转换为具有N行的多维数组

php - 排序 multidim 数组 : prioritize if column contains substring, 然后按第二列排序

java - 使用 Java 将文件上传和 POST 到 PHP 页面

java - 按升序对数组元素进行排序

JavaFX 11 : IllegalAccessError when creating Label

java - 无法通过 Android MediaCodec API 转码音频

java - 无法插入数组列表中的最后一个位置

java - 将 Arraylist 从 java.utils 转换为 kotlin.collections.arraylist

javascript - 属于数组中同一字段的值的累积和

Java:对象的数组列表以及获取自动创建的复选框的值/属性