ArrayList 容量限制限制

Moh*_*mar -2 java collections arraylist

我搜索了 ArrayList 容量问题,但找不到完整的答案。所以在这里再次询问。

我知道我们在 ArrayList 中添加的元素数量和容量是我们可以在该列表中放入多少数据,默认值为 10。

所以这里的问题是在声明是否赋予这样的能力时

List<String> list = new ArrayList<>(1);
Run Code Online (Sandbox Code Playgroud)

然后我也可以继续添加最多 10 或 20 个元素。那么这个容量声明是否仅对达到容量时发生的内部重新分配有用?

或者通过给出容量限制,我们可以只限制添加元素的那个点吗?

Era*_*ran 5

初始容量并不能决定您可以向ArrayList. 随着元素的添加,容量会在必要时自动增加。

指定初始容量的动机是性能。如果您知道您ArrayList将包含一百万个元素,那么创建ArrayList初始容量为 1000000 的元素会更有效,因为这样可以避免在ArrayList添加元素时多次调整容量大小。

  • @DavidConrad 指定初始容量绝对可以用 jmh 来测量,即使是相对较小的尺寸(大约 100)。在各种大小范围内,通过指定正确的初始容量所提供的加速似乎为 20%-40%。不过,这种加速是否“显着”是另一个问题。对于大多数情况来说,这可能并不重要。 (2认同)
  • 指定初始容量的另一个原因是为了节省空间。如果您知道要创建许多小型 (&lt; 5) 元素列表,那么与默认的 10 个元素容量相比,您可以节省大量空间。 (2认同)