我正在嘗試生成數組並根據某些函數計算值。我想將每個生成的數組保存到數組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;
}
感謝
@Abreal ..你的問題不是很清楚..你能解釋一下你的問題的流動,和你正在嘗試做的?你的PQ是什麼? –
「如何將數組作爲值傳遞給參數」首先,Java中的所有內容都是按值傳遞的。總是。你不能「傳遞」一個數組或其他任何對象。您只能傳遞對象的引用。它是通過值 – newacct