Java,移位数组中的元素

2022-08-31 16:33:16

我在Java中有一个对象数组,我试图将一个元素拉到顶部,并将其余部分向下移动一个。

假设我有一个大小为 10 的数组,并且我正在尝试拉取第五个元素。第五个元素进入到位,从 0 到 5 的所有元素将向下移动 1。0

此算法不会正确移动元素:

Object temp = pool[position];

for (int i = 0; i < position; i++) {                
    array[i+1] = array[i];
}
array[0] = temp;

如何正确操作?


答案 1

从逻辑上讲,它不起作用,您应该反转循环:

for (int i = position-1; i >= 0; i--) {                
    array[i+1] = array[i];
}

或者,您可以使用

System.arraycopy(array, 0, array, 1, position);

答案 2

假设您的数组为 {10,20,30,40,50,60,70,80,90,100}

您的循环的作用是:

迭代 1: 数组 [1] = 数组[0];{10,10,30,40,50,60,70,80,90,100}

迭代 2: 数组[2] = 数组[1];{10,10,10,40,50,60,70,80,90,100}

你应该做的是

Object temp = pool[position];

for (int i = (position - 1); i >= 0; i--) {                
    array[i+1] = array[i];
}

array[0] = temp;