2015-02-12 168 views
0

我有1d臨時arraylist和2d原始數組列表,我更新了臨時arraylist在一個循環中,並在循環結束時,我需要使原始arraylist等於臨時內容數組列表如下:讓arraylist等於另一個arraylist java

while(!Front.get(front).isEmpty()){ 
     Q.clear(); 
     for(int i=0;i<Front.get(front).size();i++){ 
      if(!Individual_Dominate.get(Front.get(front).get(i)).isEmpty()){ 
       for(int j=0;j<Individual_Dominate.get(Front.get(front).get(i)).size();j++){ 
        Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]=Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]-1; 
        if(Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]==0){ 
         Solutions_to_arrange[Individual_Dominate.get(Front.get(front).get(i)).get(j)][Input.General_Inputs.Num_objectives+Input.General_Inputs.Num_Of_Ppes]=front+1; 
         Q.add(Individual_Dominate.get(Front.get(front).get(i)).get(j)); 
        } 
       } 
      } 
     } 
     front++; 
     Front.get(front)=Q // How to do this step 
    } 

我知道有像

Front.get(front) = new ArrayList<Object>(Q); 

Front.get(front) = (ArrayList<Object>)Q.clone(); 
方法

但不確定這些方法是否合適,因爲所有這些方法都會給我一個List的副本,而不是所有的元素。因此,如果我更改了我的複製列表中的某個元素,它也會在我的原始列表中更改。

更新 我提出這個解決方案的任何評論?

front++; 
for(int i=0;i<Q.size();i++) 
     Front.get(front).add(Q.get(i)); 
    } 
+0

你會怎樣改變一個'Double'? – immibis 2015-02-12 02:15:08

+0

它不會改變它... [Java是通過值](http://javadude.com/articles/passbyvalue.htm) – 2015-02-12 02:23:12

回答

0

我認爲這會工作

while(!Front.get(front).isEmpty()){ 
     Q.clear(); 
     for(int i=0;i<Front.get(front).size();i++){ 
      if(!Individual_Dominate.get(Front.get(front).get(i)).isEmpty()){ 
       for(int j=0;j<Individual_Dominate.get(Front.get(front).get(i)).size();j++){ 
        Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]=Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]-1; 
        if(Individual_Number[Individual_Dominate.get(Front.get(front).get(i)).get(j)]==0){ 
         Solutions_to_arrange[Individual_Dominate.get(Front.get(front).get(i)).get(j)][Input.General_Inputs.Num_objectives+Input.General_Inputs.Num_Of_Ppes]=front+1; 
         Q.add(Individual_Dominate.get(Front.get(front).get(i)).get(j)); 
        } 
       } 
      } 
     } 
    front++; 
     for(int i=0;i<Q.size();i++) 
     Front.get(front).add(Q.get(i)); 
    } 
相關問題