数组(Array)与列表(ArrayList)的区别
列表(ArrayList)是对数组(Array)的一个加强
(1)空间大小
- Array的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小。
- ArrayList的空间是动态增长的,如果空间不够,它会创建一个空间比原空间大0.5倍的新数组,然后将所有元素复制到新数组中,接着抛弃旧数组。而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。
(2)存储内容
- Array数组可以包含基本类型和对象类型。
- ArrayList却只能包含对象类型。
(3)删除方法
- Array数组没有提供删除方法
- ArrayList中有remove()方法
(4)数组的优缺点
优点:
数组是所有数据结构中存储和获取速度最快的一种。
缺点:
数组的长度是固定的,如果要删除或添加数据会不方便,删除的时候空间会浪费,添加的时候如果数据已经加满了,就无法添加新的数据。
(5)列表的优缺点
优点:
支持自动改变大小
可以灵活的插入元素
可以灵活的删除元素
缺点:
牺牲效率,比一般的数组慢
建议:
基于效率和类型检验,应尽可能使用Array, 无法确定数组大小时使用ArrayList,
解决一般化的问题时,建议使用ArrayList。