ArrayList与数组的详细区别

来源:百度知道 编辑:UC知道 时间:2024/07/02 12:48:52
请讲解帝生动得讲解一下!!

arrayList 是一个队列,内存大小不固定,可以采用add的方法往队列后添加数据。

数组是一个固定内存大小的队列,不能扩充。

1:根本不存在一个动态增长的容器供我们使用。所谓集合就是在内部定义一个指定大小的数组,这个数组的大小可由Capacity属性进行设置,如果没有设置,默认是一个0长度的数组。当开始添加第一个数据时,数组的长度会被设为4。
2:当我们调用ADD方法为集合添加元素时,它会判断集合内部的数组是否已填充满,如果填充满了,就会实例化一个新的数组,数组容量为原数组容量的2倍。然后把原数组中的数据COPY到新的数组中,然后原数组会成为垃圾回收的对象被GC收集。
3:如果数据量不大或能确定数组大小的情况下,尽量使用数组而不是集合,因为多次创建新数组并COPY数据会对性能造成损伤(虽然微乎其微)。
4:如果还有疑问的话,可以定义个集合做下测试,来证明我的说法是否正确
ArrayList list = new ArrayList();
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
for(int i =0 ;i <5 ; i++) list.Add("Hello");
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
for (int j = 0; j < 5; j++) list.Remove("Hello");
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
看看会输出什么

总结:
ArrayList是一个内部控制动态增长的数组,而且所有参数都是Object类型的,而普通数组(Array)则可以指定类型,比如:int[] intArray = new intArray[10];

不知可不可以这么理解,ArrayList 就是把O