2015-09-16 61 views
-1

我想用for-loopclone()方法克隆我的ArrayList 4次,但我不能。 下面是(簡單)的代碼,我寫道:java ArrayList克隆幾次

static ArrayList<Integer> newArrList; 
    for (int n = 1; n <= 4; n++) { 
     ArrayList<Integer> arrList = new ArrayList<>(); 
     for (int i = 1; i <= 13; i++) { 
      arrList.add(i); 
     } 
     newArrList = (ArrayList<Integer>) arrList.clone(); 
     for (int i = 1; i <= 13; i++) { 
      newArrList.add(i); 
     } 
    } 

輸出是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 它打印出我arrList只有2次,但我想它的4倍。像這樣: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

這是多次克隆ArrayList的最佳方法嗎?我做錯了什麼?

+1

我不會把你做了什麼「爽快」; - ) – mastov

+0

@mastov:我在努力! - 你能看到我做錯了嗎? – dustin

回答

2

你的代碼似乎有點讓我感到困惑,所以我無法指出你到底在哪裏出錯了。

我不明白的第一件事就是爲什麼你創建4次測試列表(在主循環中)。不應該只創建一次嗎?

然後做一個clone,然後添加13個元素,然後將內容兩次放到新列表中。一次作爲原始內容的副本,然後作爲硬編碼數據。我不明白這背後的動機。

無論如何,我會用addAll只需要創建一個新的(空)單,並添加原始列表中的所有元素的4倍:

// create test list 
ArrayList<Integer> arrList = new ArrayList<>(); 
for (int i = 1; i <= 13; i++) { 
    arrList.add(i); 
} 

// clone 
ArrayList<Integer> newArrList = new ArrayList<>(); 
for (int i = 0; i < 4; i++) { 
    newArrList.addAll(arrList); 
} 
+0

這是'簡單'和'更好'的代碼。感謝那。 – dustin

+0

@dustin對不起,我無法解釋你的代碼到底出了什麼問題。我只是不夠明白。 – mastov

+0

沒關係。我現在知道我在哪裏做錯了。 – dustin