下面列出了Array和ArrayList的不同点:
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
Array大小是固定的,ArrayList的大小是动态变化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

ArrayList可以算是Array的加强版,(对array有所取舍的加强)。

另附分类比较:

存储内容比较:

  • Array数组可以包含基本类型和对象类型,
  • ArrayList却只能包含对象类型。

但是需要注意的是:Array数组在存放的时候一定是同种类型的元素。ArrayList就不一定了,因为ArrayList可以存储Object。

空间大小比较:

  • 它的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小。
  • ArrayList的空间是动态增长的,如果空间不够,它会创建一个空间比原空间大约0.5倍的新数组,然后将所有元素复制到新数组中,接着抛弃旧数组。而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。(比较麻烦的地方)。

  附上arraylist扩充机制:newCapacity=oldCapacity+(oldCapacity>>1)(注: >>1:右移1位,相当于除以2,例如10>>1 得到的就是5)但由于源码里(不再分析,这里简要略过)传过来的minCapcatiy的值是size+1,能够实现grow方法调用就肯定是(size+1)>elementData.length的情况,所以size就是初始最大容量或上一次扩容后达到的最大容量,所以才会进行扩容。因此,扩容后的大小应该是原来的1.5倍+1

方法上的比较:

ArrayList作为Array的增强版,当然是在方法上比Array更多样化,比如添加全部addAll()、删除全部removeAll()、返回迭代器iterator()等。

适用场景:
如果想要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以将它们放进一个全局数组里,但是如果我们单纯只是想要以数组的形式保存数据,而不对数据进行增加等操作,只是方便我们进行查找的话,那么,我们就选择ArrayList。而且还有一个地方是必须知道的,就是如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用ArrayList就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择LinkedList。arraylist和linkedlist的区别在哪里,什么时候使用,可以参考我的另一篇博客:《ArrayList和LinkedList有什么区别?》

 

最新文章

  1. C#中实现并发的几种方法的性能测试
  2. (BFS)poj3669-Meteor Shower
  3. jq 修改input 标签的值
  4. ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
  5. eclipse debug 快捷键
  6. FSL安装
  7. Java [leetcode 37]Sudoku Solver
  8. iOS开发笔记系列-基础2(类)
  9. CSS3秘笈:第一章
  10. gridcontrol第一行为0,没有选中为-999999
  11. ACM 阶乘的0
  12. jS判断浏览器终端
  13. springboot排除exclude
  14. [Swift]LeetCode684. 冗余连接 | Redundant Connection
  15. redis 在 php 中的应用(key篇)
  16. ScheduledThreadPoolExecutor 吞异常
  17. Nginx详解十七:Nginx深度学习篇之动静分离
  18. ecna2017-Game of Throwns
  19. Doxygen自动文档生成工具在Eclipse中的集成及使用举例
  20. IDEA中上传项目到GIt

热门文章

  1. InfluxDB 聚合函数实用案例
  2. C语言程序设计100例之(17):百灯判亮
  3. 20191031-5 beta week 1/2 Scrum立会报告+燃尽图 03
  4. 【2018寒假集训 Day2】【动态规划】抢金块
  5. 程序员的算法课(20)-常用的图算法:最小生成树(MST)
  6. HTML表格中各元素之间属性之间的相互影响
  7. Kafka topic Schema version mismatch error - org.apache.kafka.common.protocol.types.SchemaException
  8. js消除小游戏(极简版)
  9. ubuntu安装过程中遇到的一些问题及解决办法。
  10. shell 点命令和source指令