我是java的新手。我刚刚阅读了有关动态数组的信息。它说在动态数组中,当添加超出数组大小的元素时,大小将增加一倍。例如,我的数组大小为2,这意味着我可以添加两个元素。如果我尝试向该数组添加第3个元素,则不会抛出ArrayIndexOutOfBoundException,而是数组大小将加倍(在这种情况下为4,因为较早的大小为2)。我只想看看这种行为。所以我用了ArrayList,在这里我想到了两个问题。
我们可以用大小初始化数组列表吗?
我知道ArrayList有一个称为size的方法,它将告诉您该数组中存储了多少个元素。但是,ArrayList中是否有任何方法可以说出数组的容量是多少(而不是该数组中存储了多少个元素)?
第一个问题-您可以创建具有给定初始大小的ArrayList
吗? -您可以使用构造函数以给定的初始容量
ArrayList
ArrayList<> arr = new ArrayList<YourFavoriteType>(capacity);
但是,没有直接的方法使用ArrayList
的接口构造具有给定大小的ArrayList
。但是,您可以向ArrayList
添加一系列元素。
关于第二个问题-有没有办法读出ArrayList
的容量-答案是否定的。没有任何方法可以让您执行此操作。
作为说明,通常在需要更多空间时通过将动态数组的大小加倍来教导动态数组,但实际上,看到其他增长因素更为常见。我相信许多Java实现都将3/2作为增长因素。这样可以提高内存效率,并且在允许重新分配释放空间的情况下,与内存分配器一起发挥更好的作用。
希望这会有所帮助!