2011-06-30 113 views
11

當我運行下面的代碼時,沒有任何東西被複制 - 我做錯了什麼?從一個陣列複製到另一個陣列的最佳方法

另外,這是將數據從一個陣列複製到另一個陣列的最佳/最有效的方法嗎?

public class A { 
    public static void main(String args[]) { 
     int a[] = { 1, 2, 3, 4, 5, 6 }; 
     int b[] = new int[a.length]; 

     for (int i = 0; i < a.length; i++) { 
      a[i] = b[i]; 
     } 
    } 
} 
+5

呃,你不就是這樣嗎? – zellio

+0

你看到什麼問題?你的代碼看起來很好(你在尋找System.arraycopy()嗎?) – rsp

+1

@Mimi,@rsp - 他的代碼中存在一個錯誤! –

回答

18

我覺得你的任務是倒退:

a[i] = b[i];

應該是:

b[i] = a[i];

71

有很多的解決方案:

b = Arrays.copyOf(a, a.length); 

它分配一個新的數組,複製a的元素,並返回新的數組。

或者

b = new int[a.length]; 
System.arraycopy(a, 0, b, 0, b.length); 

哪個副本源陣列的內容爲您分配自己一個目標數組。

或者

b = a.clone(); 

其工作方式非常類似於Arrays.copyOf()。見this thread

或者您發佈的內容,如果您在循環中反轉作業的方向。