- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我可以使用ArrayList.trimToSize()吗?动态 arrayList 中的方法?
提前致谢。
最佳答案
来自您自己链接的文档:
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 倍。此方法所做的是调整内部数组的大小,使其没有剩余空间。
您看不到任何事情。您不会丢失任何数据,它只是更小的后备阵列。将数据添加到 arraylist 将再次正常扩展数组。
我假设您指的是“普通”ArrayList
。如果你使用它,你将减少使用的内存,但如果你仍然在之后添加数据,它也将是徒劳的,而且它对于小列表来说非常无用。如果您有一个包含很多很多项目的 ArrayList
,并且您确定不想再添加,那么您可以调用此方法来减少一些内存占用。
见上文。我认为您不太可能会用到它。
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/
我可以使用ArrayList.trimToSize()吗?动态 arrayList 中的方法? 如果我使用它,会发生什么? 我可以在动态 ArrayList 上使用此方法获得任何好处吗? 在这种情况下
我有一个数组列表,它的代码是: ArrayList recentdata=new ArrayList(); 我想将 ArrayList 的大小限制为特定大小,即在我的情况下为 5,当它达到该数字时。这
来自 a recently posted question我遇到了ArrayList#trimToSize()这会将支持数组的大小减小到当前集合的大小。 引用javadoc Trims the cap
我正在运行以下代码,但出现错误 The method trimToSize() is undefined for the type List public class ListPerformance
The capacity of a Queue is the number of elements the Queue can hold. As elements are added to a Que
有没有一种方法可以像通过 ArrayList 的 trimToSize() 方法一样压缩 HashMap? 我能想到的一种方法是遍历当前映射中的所有条目并填充一个新条目,然后用新条目替换原始条目。 有
我认为trimToSize() Java 的 ArrayList 中的方法是不必要的。我的理解是: 让我们取一个整数数组: int[] a = new int[10]; //This allocate
假设我有一个字符串数组列表。我使用了 Function ensureCapacity() 并将其容量设置为 50。 但我只添加了 10 个字符串元素,剩下的 40 个内存被浪费了。 现在我使用 tri
任何想要访问 java.util.ArrayList 工具的用户都必须遵守 java.util.List 中提供的使用契约(Contract)。 但是可以轻松打破这种使用契约并访问方法 trimToS
例如: public void trimToSize() { modCount++; if (size < elementData.length) { elementD
我是一名优秀的程序员,十分优秀!