繁体   English   中英

java Arraylist 移除元素

[英]java Arraylist remove elements

假设 ArrayList 中有 10 个元素,如果我从中间删除了 2 个元素,那么 arraylist 将包含 8 个元素,但当时容量会是 10 个或减少到 8 个。

API 指出:

每个 ArrayList 实例都有一个容量。 容量是用于存储列表中元素的数组的大小。 它总是至少与列表大小一样大。 随着元素添加到 ArrayList,其容量会自动增长。 除了添加元素具有恒定的摊销时间成本这一事实之外,没有指定增长策略的细节

并且您始终可以在调试器中凭经验对此进行测试。 删除两个元素后,查看支持ArrayList的数组,看看它的大小。 最有可能的是10。

该行为取决于 ArrayList 的实现。 你不能依赖这种实现细节。 您必须考虑的唯一一件事是容量始终大于或等于列表中的元素数。 如果您需要容量正好是元素的数量(因为您可能想减少 memory 的使用),您必须使用 function trimToSize()明确询问它。

我认为它可能会改变,因为假设我们默认创建新的数组列表 JVM 在 memory 中分配 10 个连续的位置。如果你放 8 或 2 或零,它将是相同的。

但是如果你放了 15 个元素,那么它会增加 20 个 memory 位置。但是如果你再次低于 10,它应该释放 memory 并减少到 10 个默认大小。

这是动态分配。对于 1000 个元素列表,如果您要删除元素并减少到 2,那么它必须释放 memory 是合乎逻辑的。它应该取决于删除的元素数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM