ArrayList是否有任何称为capability的功能来查找现在可以存储多少个元素?

问题描述 投票:0回答:1

我是java的新手。我刚刚阅读了有关动态数组的信息。它说在动态数组中,当添加超出数组大小的元素时,大小将增加一倍。例如,我的数组大小为2,这意味着我可以添加两个元素。如果我尝试向该数组添加第3个元素,则不会抛出ArrayIndexOutOfBoundException,而是数组大小将加倍(在这种情况下为4,因为较早的大小为2)。我只想看看这种行为。所以我用了ArrayList,在这里我想到了两个问题。

  1. 我们可以用大小初始化数组列表吗?

  2. 我知道ArrayList有一个称为size的方法,它将告诉您该数组中存储了多少个元素。但是,ArrayList中是否有任何方法可以说出数组的容量是多少(而不是该数组中存储了多少个元素)?

java arrays arraylist dynamic-arrays
1个回答
0
投票

第一个问题-您可以创建具有给定初始大小的ArrayList吗? -您可以使用构造函数以给定的初始容量

创建一个ArrayList
ArrayList<> arr = new ArrayList<YourFavoriteType>(capacity);

但是,没有直接的方法使用ArrayList的接口构造具有给定大小的ArrayList。但是,您可以向ArrayList添加一系列元素。

关于第二个问题-有没有办法读出ArrayList的容量-答案是否定的。没有任何方法可以让您执行此操作。

作为说明,通常在需要更多空间时通过将动态数组的大小加倍来教导动态数组,但实际上,看到其他增长因素更为常见。我相信许多Java实现都将3/2作为增长因素。这样可以提高内存效率,并且在允许重新分配释放空间的情况下,与内存分配器一起发挥更好的作用。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.