数组和集合有没有默认长度?

众所周知,ArrayList集合底层采用数组来实现,内存连续查询快增删慢,线程不安全效率高。那么既然底层采用动态数组实现,数组长度创建后不能改变,那么new一个ArrayLIst集合以后这个数组或者集合有没有一个默认长度呢?

该回答引用ChatGPT

是的,当您创建一个新的ArrayList对象时,它会初始化一个具有默认大小的内部数组。默认大小通常是10,但可以在创建ArrayList对象时指定初始容量大小。例如,以下代码将创建一个具有初始容量为20的ArrayList对象:

ArrayList<String> list = new ArrayList<>(20);

需要注意的是,当您向ArrayList添加元素时,如果ArrayList的大小超过了其当前容量,则会自动调整其容量以容纳更多元素。具体来说,ArrayList会创建一个新的数组,将原始数组中的所有元素复制到新数组中,然后将新元素添加到新数组中。这种自动扩展容量的过程称为"扩容"。扩容的默认增量为原始容量的一半,但可以通过构造函数指定不同的增量。

默认长度肯定是有的
底层用数组实现,但会根据当前需要存储的数据量重新分配调整数组的大小
实际上动态数组就是对数组的一个封装类,当存储数据超出已有数组大小时,会重新分配更大的空间,确保数据的存储。从使用者看来,数组就像动态的

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在Java中,new一个ArrayList集合时,如果不指定初始容量,它的默认长度是10。也就是说,ArrayList的底层数组在创建时会默认初始化长度为10。但是,随着向ArrayList中不断添加元素,如果长度不够,ArrayList会自动扩容,扩容机制会重新创建一个更大的底层数组,并将原数组中的元素复制到新数组中。这个扩容的大小默认是原来长度的1.5倍。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^