[英]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.