数组与容器的区别


1.    数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型。

数组只能保存特定类型。数组可以保存基本类型,但容器只能容纳对象。(添加基本数据时,会把基本数据类型数据封装成该数据类型封装类的对象);创建一个数组时可让它容纳一种特定的类型。这意味着可进行编译时间的类型检查防范自己设置了错误的类型或者错误地提取了一种类型,而不是运行时的Exception。容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理。Java对数组和容器都做边界检查;如果过了界,它就会给一个RuntimeException。


2.  数组是固定长度的,集合的长度是可变的。

数组是一种高效的存储和随机访问对象引用序列的方式,但是当创建一个数组对象(注意和对象数组的区别)后,数组的大小也就固定了,当数组空间不足的时候就再创建一个新的数组,把旧的数组中所有的引用复制到新的数组中。(数组是一种内存结构,而容器是一种数据结构)[知道数组的长度,而且以后也不会再增加,那肯定就使用数组了;如果数组的长度不定或者说是长度会增加,为了方便起见使用容器]


3.  数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。


总结:

一般情况下,考虑到效率与类型检查,应该尽可能考虑使用数组。如果要解决一般化的问题,数组可能会受到一些限制,这时可以使用Java提供的容器类。

附:

  操作数组的工具类: Arrays(数组排序、数组转化成集合等功能);

  操作集合的工具类:Collections(集合排序、集合转化数组等功能)


由于个人能力有限,总结的不够全面,欢迎补充与指正!大笑

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐