数组(Array)和列表(ArrayList)有什么区别?
Array和ArrayList的不同点:
- Array可以包含基本类型和对象类型,ArrayList只能包含对象类型
- 数组中是可以间隔存null的,而ArrayList是做不到这一点的。
- Array大小是固定的,ArrayList的大小是动态变化的,ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍
- ArrayList是List的实现类,具有更多可操作的方法,ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
- 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
空间大小比较:
- 数组Array它的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小。
- ArrayList默认长度为10,当你插入值时,会先检查空间,如果不足,则扩充原来的1.5倍。扩充时会创建一个1.5倍的数组,然后复制原来的数据到新数组,摒弃旧数组(比较麻烦的地方)。
适用场景:
- 当数据长度不变时,尽量使用Array。
- 当长度不固定时,使用ArrayList,另外,如果需要频繁增加数据时,可预设ArrayList的长度,因为这样减少了复制数组的损耗。
- 如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用ArrayList就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择LinkedList。
参考博客:
[1] 数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?