将对象传递给Arraylist
问题描述:
我正在尝试生成数组并根据某些函数计算值。我想将每个生成的数组保存到数组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;
}
感谢
答
希望我得到你的问题
.. how to pass array as value instead of reference ?
您需要复制数组。使用System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);
+0
是的,它的工作:)非常感谢你 – Abreal
@Abreal ..你的问题不是很清楚..你能解释一下你的问题的流动,和你正在尝试做的?你的PQ是什么? –
“如何将数组作为值传递给参数”首先,Java中的所有内容都是按值传递的。总是。你不能“传递”一个数组或其他任何对象。您只能传递对象的引用。它是通过值 – newacct