假设我有一个二维数组如下:
double [] [] a = {{1,0,0},{0,0,1},{0,1,0}};
我需要在循环中使用这个'a',每次都作为方法的输入。根据该方法的输出,该2-D阵列的一个元素可以改变。例如:
double [][] new_a=a;
new_a[0][0]=0;
我想将新a存储在Hash-map中:
HashMap<Integer,double[][]> Store=new HashMap<Integer,double[][]>();
Store.put(size.Store(),new_a);
下次在循环中我需要原来的'a'。我不知道如何从2-D数组'a'复制,以便每次在循环中使用原始数据并将新数据存储在Hash-map中。
当我像上面那样进行编码时,它也会更改原始的“a”,当我想要存储在“Store”中时,它会替换所有先前存储的数组的new_a。
我想知道你是否可以帮我解决这个问题?感谢。
答案 0 :(得分:0)
确保您在循环之外定义double [][] new_a = a
和HashMap<Integer,double[][]> Store=new HashMap<Integer,double[][]>()
。我认为你可能正在重新定义循环中的所有内容。你能展示代码的扩展版本以查看循环本身吗?
答案 1 :(得分:0)
两种方法。第二是更快,应该是O(n),我beleave。
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);
}