您好,登录后才能下订单哦!
在 Java 中,ArrayList 是一个动态数组,它可以根据需要自动扩容。当 ArrayList 的大小达到其当前容量时,它会自动扩容以容纳更多的元素。ArrayList 的默认容量是 10,但可以根据需要设置初始容量。
要了解 ArrayList 如何动态扩容,我们需要了解其内部实现。ArrayList 的主要实现类是 java.util.ArrayList,它的内部使用一个 Object 类型的数组 elementData 来存储元素。当 ArrayList 的大小达到其当前容量时,它会创建一个新的数组,其大小为当前容量的两倍,然后将所有现有元素复制到新数组中。
以下是 ArrayList 动态扩容的步骤:
以下是 ArrayList 动态扩容的示例代码:
public void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1); // newCapacity = oldCapacity * 2
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
在这个示例中,ensureExplicitCapacity
方法用于确保 ArrayList 的容量至少为给定的最小容量。grow
方法用于实际扩展 ArrayList 的容量。它首先计算新的容量,然后创建一个新的数组,并将现有元素复制到新数组中。最后,将数组引用指向新数组。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。