我遇到了问题。在我的主要班级,我有:
int ints[] = Type.desc(1000);
int auxi[] = new int [1000];
auxi = ints;
System.out.println("========== Init =========");
// Insertion Sort
Algoritmos.insertionSort(ints);
ints = auxi;
desc方法是:
public static int[] desc (int n){
int aux[];
aux = new int[n];
int pos = 0;
for (int i = n-1; i > 0; i--) {
aux[pos++] = i;
}
return aux;
}
更改了int和auxi的值。
如何保存矢量整数的初始值?
答案 0 :(得分:3)
如何保存矢量整数的初始值?
制作数组的副本,如下所示:
int[] copy = new int[orig.length];
System.arraycopy(orig, 0, copy, 0, orig.length);
请注意,这会生成数组的浅副本。它与原语无关,但对于参考类型,您可能需要做更多的工作来制作副本。
答案 1 :(得分:2)
int ints[] = Type.desc(1000);
int auxi[] = new int [1000];
auxi = ints;
如何保存矢量整数的初始值?
不要将它分配给另一个变量。上面第二行中的初始化是没有意义的,然后继续将ints
分配给auxi
。此步骤不会复制数组,它只是复制引用。如果要保留原始数组,请将第三行更改为复制元素的循环,或使用Arrays.copyOf()
或System.arraycopy()
。
答案 2 :(得分:1)
而不是这样做
auxi = ints;
使用
System.arrayCopy()
答案 3 :(得分:0)
您可以使用
int [] original_array_backup = new int [ints.length]
System.arraycopy(ints, 0, original_array_backup, 0)
所以你可以将original_array_backup传递给你的算法而不会丢失你的int数组的数据和顺序。