繁体   English   中英

如何在Java中制作二维数组的副本?

[英]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 = aHashMap<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM