在数组中插入元素,同时将元素向右移动



假设我有一个数组:{5, 7, 8, 9, 10}。但是,我想插入一个元素,使数组变成{5, 6, 7, 8, 9},将6插入57之间,将10移出,并将9移向右侧。

如何使用数组和for循环来解决这个问题?

数组是非常低级的结构,没有为您做这些的方法。ArrayList所做的应该用于这样的工作。

如果你想知道ArrayList的作者是如何实现这样一个东西的,那么作为一个纯粹的学术练习,它永远不会出现在产品中:

, . .只是. .这样做。

分解步骤并全部执行。

Starting state: [5, 7, 8, 9, 10]
Desired state: [5, 6, 7, 8, 9 ]

换句话说,我们需要把7/8/9复制到新的位置来腾出空间。一旦完成,我们可以写6.

int[] in = {5, 7, 8, 9, 10};
// Copy starting from index 1 (second number)
// Copy into the same array, at index 2.
// ... and copy 3 numbers.
System.arraycopy(in, 1, in, 2, 3);
System.out.println(Arrays.toString(in));
// Prints: [5, 7, 7, 8, 9].
in[1] = 6;
System.out.println(Arrays.toString(in));
// Prints: [5, 6, 7, 8, 9].