Har*_*Cho 0 java arrays arraylist
对于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
Run Code Online (Sandbox Code Playgroud)
这不是浪费记忆吗?
首先,您应该注意,一旦创建,就无法更改数组的大小.更改a的基础数组的大小ArrayList需要将数组的整个内容复制到新数组.
当您增加大小时,您必须分配一个更大的数组,否则您将无法适应新元素.但是,从列表中删除时复制所有内容并不值得花费性能开销.内存通常比性能低.
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |