2012-03-13 51 views
2

我有一個arraylist由四個元素填充,其順序是隨機的(他們從另一個arraylist隨機放置在這裏)。然後我有一個for循環重複10次,在每次重複結束時,我使用clear方法清除數組列表的所有元素。然而,當我重新開始一個新的重複時,我想重新使用舊的(以前使用的)元素作爲上一次重複列表中的元素,以便我可以再次使用這些元素。我想重複一遍,直到我退出循環的10次重複。有什麼辦法可以實現這一點?Java - 如何重新填充先前已知元素的arraylist

代碼除了我的問題:

ArrayList<String> answerPegs = new ArrayList<String>(); 
    // add element to ArrayList 

    ArrayList<String> mySecretAnswer = new ArrayList<String>(); 

    for (int n = 4; n > 0; n--) 
    {  
     //populate mySecretAnswer with elements from answerPegs 
    } 


    ArrayList<String> clone1 = mySecretAnswer; 

    for (int q = 0; q < 10; q++) { 

     for (o = 0; o < 4; o++) 
     { 
     } 
     // called clear() method here 

    } // END OF 10-ROW LOOP 
+0

除了@ beerbajay的評論,爲什麼不刪除clear()調用呢? – 2012-03-13 23:47:27

+0

由於我在編程Mastermind,我的方法是將已經與空字符串進行比較的顏色替換掉,以便它們不會再次被檢查(當然不是一種非常有效的方法)。所以最後,原始數組列表的一部分被空字符串部分替換,我不能再使用它,否則我將不得不親自手動清除列表。 – 2012-03-13 23:54:13

+0

爲什麼不保存最初從源列表插入的標記? – 2012-03-13 23:56:17

回答

1

我只想建議有2個列表 - 保留原始列表的原始副本,然後迭代+清除該列表的副本。

public void doRepetitions(List<Object> original) 
{ 
    for(int i=0; i<10; i++) 
    { 
     List<Object> working = new ArrayList<Object>(original); 
     doStuffWithList(working); 
    } 
} 

編輯
既然你已經發布你的代碼,我可以給出一個更明確的答案:

你可以改變你的clone是:

ArrayList<String> clone1 = new ArrayList<String>(mySecretAnswer); 

然後將其移至您的for循環中:

for (int q = 0; q < 10; q++) 
{ 
    ArrayList<String> clone1 = new ArrayList<String>(mySecretAnswer); 
    // .... 
} 
+0

謝謝!問題解決了。 :) – 2012-03-14 00:09:16

0

你能使用2個循環嵌套,只是有內循環是for循環10次,再用清底一次

+0

謝謝你的幫助! – 2012-03-14 11:46:17