【发布时间】:2016-01-21 02:12:55
【问题描述】:
对于add() 方法,实现是elementData\[\] 数组的大小根据需要增长。但是,查看remove() 方法,它不会在删除元素时缩小大小。
我使用一个简单的代码进行了测试,elementData[] 从10 开始并不断增长。但是,当我使用remove() 方法删除所有元素时,elementData[] 的大小将停留在我完成添加所有元素的位置。
int testSize = 10000000;
ArrayList<Integer> alist = new ArrayList<Integer>();
// size of elementData[] is 10
for(int i = 0; i < testSize; i++) {
alist.add(i);
}
// size of elementData[] is 13845150
for(int i = alist.size()-1; i >= 0; i--) {
alist.remove(i);
}
// size of elementData[] remains at 13845150
这不是浪费内存吗?
【问题讨论】: