数组和ArrayList的区别和应用场景的选择

大家好,我是Ziph!

大家都知道数组时属于线性表结构的,很好理解的是线性表就像一条线一样的结构。每个线性表上的数据最多只有前、后两个方向。而除了数组,链表、队列、栈等也是线性表。那么与它对立的概念就是非线性表了,比如:二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简答的前后关系。

那么我们接下来谈谈数组与ArrayList应用场景的选择。

数组是用于储存多个相同类型数据的集合。

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本

ArrayList

  1. 在这里先说ArrayList,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处
  2. 相比于数组,Java中的ArrayList封装了数组的很多操作,并支持动态扩容

数组

  1. Java中ArrayList中无法存储基本数据类型,比如int、long,需要封装为Integer、Long类,而AutoBoxing(装箱)、Unboxing(拆箱)则有一定的性能消耗,所以如果特别关注性能,或者希望使用基本数据类型,就可以选数组。
  2. 若数据大小实现已知,并且涉及到的数据操作非常简单,可以使用数组
  3. 表示多维数组时,数组往往更直观
  4. 业务开发容器即可,底层开发,如网络框架,性能优化。就可以选择数组啦
  5. 虽然Java中的ArrayList封装了数组的很多操作,并支持动态扩容。但是一旦超过了最大容量,扩容时比较消耗内存,因此涉及到内存申请和数据搬移。这时候数组更适合这个场景

总结

数组和ArrayList各有好坏,只要你根据自己所适合的场景选择合适的数据结构即可。

如果有问题请提出,留言回复!
Email:[email protected]

发布了49 篇原创文章 · 获赞 94 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104350055
今日推荐