2012-10-07 314 views
1

我正在嘗試生成數組並根據某些函數計算值。我想將每個生成的數組保存到數組List PQ中。將對象傳遞給Arraylist

的重要方法是: INIT:發起系列陣列 的計算:是計算在該方法中陣列測量或值I要檢查,如果這個陣列已經由在搜索計算PQ數組,它將具有所有先前計算的數組。

厲害,每一個用於階段for (j=0;j<s;j++)後的溶膠[]如何在數組列表和從未用新值更新數組列表改變的對象一些。

它就像PQ.add(sol)和calculate(solution)之間存在對象關聯;

如何刪除此鏈接,即通過按引用並將其轉換成通過按值因此我可以添加新的陣列到PQ的ArrayList。

以另一種方式 如何傳遞數組值,而不是參考

這是我的代碼:

ArrayList previous_values=new ArrayList(); 
ArrayList PQ=new ArrayList(); 

     void init(int index) 
      { 
       int j; 
       for (j=0;j<s;j++) 
        { 
        r = j+1; 
        array [index][j]=r*index; 
        solution[j]=array[index][j]; 
        } 
       f[index]=calculate(solution);} 


     double calculate(int sol[]) 
     { 


      double r; 
      r=search_Previous(sol); 
     if(r==-1) { 


      PQ.add(sol); 
    r=sol[0]*5; 
previous_value.add(r); 
    } 
     } 


     public double search_Previous(int[] arr) 
      { 
       double d=-1; 
       for(int i=0;i<PQ.size();i++) 
       { 
        if(equal_arr(arr,(int[])(PQ.get(i)))) 
        { 
        return (double)previous_value.get(i) ; 
        } 
       } 
       return d; 
      } 

     public static boolean equal_arr(int[] list1, int[] list2) { 



       // Now test if every element is the same 
       for (int i = 0; i < list1.length; i++) { 
        if (list1[i] != list2[i]) 
         return false; // If one is wrong then they all are wrong. 
       } 

       // If all these tests worked, then they are identical. 
       return true; 
     } 

感謝

+0

@Abreal ..你的問題不是很清楚..你能解釋一下你的問題的流動,和你正在嘗試做的?你的PQ是什麼? –

+0

「如何將數組作爲值傳遞給參數」首先,Java中的所有內容都是按值傳遞的。總是。你不能「傳遞」一個數組或其他任何對象。您只能傳遞對象的引用。它是通過值 – newacct

回答

2

希望我得到你的問題

.. how to pass array as value instead of reference ? 

您需要複製數組。使用System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);

+0

是的,它的工作:)非常感謝你 – Abreal

0
double calculate(int sol[]) 
{ 


    double r; 
    r=search_Previous_f(sol); 
if(r==-1) { 


    PQ.add(sol); 
} 

順便說一句,你沒有關閉if語句

+0

好吧,我關閉瞭如果但我的主要問題是如何傳遞數組作爲值而不是參考? – Abreal

+0

問題不存在 –

+0

你是什麼意思?運行後,我想在PQ數組列表(23,3,5,6),(5,7,88,9)等中有這樣的事情,但我在PQ數組列表中只有一個結果(55, 6,7,8),我認爲這是因爲通過參考?有關這個的任何線索? – Abreal