[英]How can I make a copy of 2-D array in java?
假设我有一个二维数组,如下所示:
double [] [] a = {{1,0,0},{0,0,1},{0,1,0}};
我每次都需要在循环中使用此“ a”作为方法的输入。 根据该方法的输出,此二维数组的一个元素可能会更改。 例如:
double [][] new_a=a;
new_a[0][0]=0;
我想将new-a存储在哈希图中:
HashMap<Integer,double[][]> Store=new HashMap<Integer,double[][]>();
Store.put(size.Store(),new_a);
下次在循环中我需要原始的“ a”。 我不知道如何从二维数组'a'中复制一个副本,以便每次在循环中使用原始副本并将新副本存储在哈希图中。
当我像上面那样编码时,它也会更改原始的“ a”,并且当我想存储在“ Store”中时,它将所有先前存储的数组替换为new_a。
我想知道您是否可以帮助我解决这个问题? 谢谢。
确保在double [][] new_a = a
定义double [][] new_a = a
和HashMap<Integer,double[][]> Store=new HashMap<Integer,double[][]>()
。 我认为这可能是您在重新定义循环中的所有内容时遇到的问题。 您可以显示代码的扩展版本以查看循环本身吗?
两种方法。 第二快,应该是O(n),我相信。
for(int i=0; i<old.length; i++)
for(int j=0; j<old[i].length; j++)
old[i][j]=current[i][j];
要么
int[][] src //Old one you want a copy of
int length = src.length;
int[][] target = new int[length][src[0].length];
for (int i = 0; i < length; i++) {
System.arraycopy(src[i], 0, target[i], 0, src[i].length);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.