1.可以将ArrayList想象成一个会自动扩容的Array.
2.Array:长度固定,不能动态改变,但是高效。
ArrayList:容量可动态增长,可动态更改,牺牲效率。
3.基于效率和类型检验,应该尽可能使用 Array,无法确定数组大小才使用ArrayList!
4.ArrayList是Array的复杂版,ArrayList内部封装了一个object类型的数组,从一般意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,比如Index,IndexOf,Contains,Sort等都是在内部数组的基础上直接调用Array的对应方法.
关于效率问题:数组扩容是对ArrayList效率影响比较大的一个因素,每当执行Add,AddRange,Inster,InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该说是比较影响效率。