假设我有一个按升序排序的整数数组,我想插入一个新数字,并且我知道在什么位置插入它。我如何使用System.arraycopy。
System.arraycopy(items, i, items, i + 1, items.length+1);
items[i] = n;或者,我是否必须从插入的位置(将位置移动一个元素)创建一个临时数组副本到临时数组,然后复制回原始数组
int[] newItems = new int[size + 1];
System.arraycopy(items, i, newItems, i + 1, items.length+1);
items[i] = s;
size++;
System.arraycopy(items, 0, newItems, i, i);
items = newItems;发布于 2012-07-12 06:00:39
你的第一种方法将会起作用。
如果您没有信心,请参阅arraycopy arraycopy上的文档。如果源和目标是相同的,它将表现为复制到一个临时数组,然后复制回原始数组,所以您可以确信它会工作!
发布于 2012-07-12 06:31:46
一些想法/观察
https://stackoverflow.com/questions/11442105
复制相似问题