gpt4 book ai didi

java - ArrayList.trimToSize() 方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:27:07 26 4
gpt4 key购买 nike

我可以使用ArrayList.trimToSize()吗?动态 arrayList 中的方法?

  1. 如果我使用它,会发生什么?
  2. 我可以在动态 ArrayList 上使用此方法获得任何好处吗?
  3. 在这种情况下,我应该使用这种方法。

提前致谢。

最佳答案

来自您自己链接的文档:

Trims the capacity of this ArrayList instance to be the list's current size. An application can use this operation to minimize the storage of an ArrayList instance.

ArrayList 在内部存储一个包含所有项目的数组。在某些时候,ArrayList 会通过将所有值复制到一个更大的数组来“扩展”这个数组。每当添加项目并且所需容量大于当前容量时,就会发生这种情况。此时发生的是以下代码行:

int newCapacity = oldCapacity + (oldCapacity >> 1);
elementData = Arrays.copyOf(elementData, newCapacity);

本质上,这将创建一个新数组,其大小是当前数组的 1.5 倍。此方法所做的是调整内部数组的大小,使其没有剩余空间。

  1. 您看不到任何事情。您不会丢失任何数据,它只是更小的后备阵列。将数据添加到 arraylist 将再次正常扩展数组。

  2. 我假设您指的是“普通”ArrayList。如果你使用它,你将减少使用的内存,但如果你仍然在之后添加数据,它也将是徒劳的,而且它对于小列表来说非常无用。如果您有一个包含很多很多项目的 ArrayList,并且您确定不想再添加,那么您可以调用此方法来减少一些内存占用。

  3. 见上文。我认为您不太可能会用到它。

trimToSize() 来源:

public void trimToSize() {
modCount++;
int oldCapacity = elementData.length;
if (size < oldCapacity) {
elementData = Arrays.copyOf(elementData, size);
}
}

关于java - ArrayList.trimToSize() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com