Java,移动数组中的元素

新手上路,请多包涵

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

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

该算法不能正确移动元素:

 Object temp = pool[position];

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

我该怎么做才正确?

原文由 darksky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

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

你的循环所做的是:

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

迭代 2: array[2] = array[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;

原文由 Komal Padia 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

或者你可以使用

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

原文由 Howard 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题