所以我想在特定索引中插入一个值,这意味着如果我想插入的索引不存在或者大于size,我会抛出异常,否则,我会用这个方法来确保数组的容量不是空的:
private void ensureCapacity(int size_wanted)
{
int max_capacity = storage.length;
if (size_wanted > max_capacity)
{
max_capacity = max_capacity * GROW_FACTOR +1;
storage = Arrays.copyOf(storage, max_capacity); // increases array size + copy contents
}
}
然后在这一点上,我想扩展数组并且已经制作了原版的副本,并且已经增加了尺寸,对吗?
我需要做的就是使用一个循环并将所有内容向右移一个,为我想要插入的索引留出空间,对吗?
答案 0 :(得分:1)
您可以使用System.arrayCopy
移动数组。
但为什么要重建ArrayList
答案 1 :(得分:1)
你不需要使用循环;您可以使用方法System.arraycopy
来移动数组中的元素。它正确处理重叠范围:
System.arraycopy(storage, insertPos, storage, insertPos+1, oldSize - insertPos);