您可以从文档中链接自己:
将此ArrayList实例的容量调整为列表的当前大小。应用程序可以使用此操作来最小化ArrayList实例的存储。
在内部,一个
ArrayList存储所有项目的数组。在某些时刻,
ArrayList将通过将所有值复制到更大的数组中来“扩展”此数组。每当添加一项且所需容量大于当前容量时,就会发生这种情况。此时发生的是以下代码行:
int newCapacity = oldCapacity + (oldCapacity >> 1);elementData = Arrays.copyOf(elementData, newCapacity);
本质上,这将创建一个新数组,其大小是当前数组的1.5倍。此方法的作用是调整内部数组的大小,以使其没有剩余空间。
您看不到任何事情发生。您不会丢失任何数据,它只是较小的支持阵列。将数据添加到arraylist将再次正常扩展阵列。
我认为你的意思是“正常”
ArrayList
。如果使用此选项,则将减少所使用的内存,但是如果在此之后仍要添加数据,那将是徒劳的,并且对于小列表而言,这是毫无用处的。如果您有ArrayList
很多项目,并且确定不再添加,则可以调用此方法以减少一些内存占用。往上看。我认为您不太可能会使用此功能。
trimToSize()从来源:
public void trimToSize() { modCount++; int oldCapacity = elementData.length; if (size < oldCapacity) { elementData = Arrays.copyOf(elementData, size); }}


