我正在使用向量,当我复制数据并尝试编辑它时,向量和副本都会发生变化。
//The vectors contains int[] and the first 3 are loaded with int values.
int ToCheck[] = OpenSet.elementAt(Current);
ToCheck[1] = ToCheck[1] + 1; // This changes OpenSet and ToCheck[].
boolean IsInVector = false;
for(int y = 0;y < OpenSet.size(); y++){
if(ToCheck == OpenSet.elementAt(y)) // Because it changed both values it always is true
{
IsInVector == true;
}
}
我希望能够复制矢量中的数据并进行编辑,而无需更改原始数据。
答案 0 :(得分:0)
您需要创建数组的完整副本:
int[] origArr = OpenSet.elementAt(Current);
int[] newArr = Arrays.copyOf(origArr, origArr.length);
另一个(不相关的) - 请遵循Java的命名约定,这是变量名开头的小写。
答案 1 :(得分:0)
复制数组的简单方法是使用Arrays.copyOf
:
int[] tmp = openSet.elementAt(current);
int toCheck[] = Arrays.copyOf(tmp, tmp.length);
当您正在倾听时,请学会使用已接受的Java命名约定。方法名称和字段/参数/本地名称应以小写字母开头。