看过ArrayList源码的朋友有没有看到里面有个不常用的方法:

这方法是干嘛的呢?说白了就是瘦身用的。
下面演示一下:
public class Test {
public static void main(String[] args) {
// 注意:trimToSize()方法属于ArrayList
ArrayList<String> names = new ArrayList<>();
for (int i = 0; i < 10; i++) {
names.add("Tom" + i);
}
names.add("Jim");
names.trimToSize();
System.out.println(names);
}
}
接下来看看debug:

执行完for循环,此时显示集合容量是10,有的同学说使用IDEA进行debug没有显示elementData,操作如下设置即可:

接下来再添加一个元素:

此时集合容量变成了15,并且为null的元素不显示,来看一下ArrayList的扩容源码:

此时,oldCapacity = 10,1010(10)右移一位0101(5),newCapacity = 10 + 5 = 15;
之后调用trimToSize()方法,再看看debug内容:

这个时候集合的容量变成了11,也就是变成了集合的实际容量,动态增加的部分被删除了。
此方法的目的是为了节约内存空间设置的,相当于手动回收内存,对JAVA语言来说意义不大,了解即可。
本文深入探讨了Java中ArrayList的trimToSize()方法,该方法用于调整ArrayList的容量,使其等于实际大小,从而优化内存使用。通过示例代码和debug分析,详细解释了方法的工作原理和应用场景。

234

被折叠的 条评论
为什么被折叠?



