数组VS集合

Posted jetqiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组VS集合相关的知识,希望对你有一定的参考价值。

1、数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据
2、假设数组a[int],它的首地址是base_address,那么a[k]元素的起始地址等于base_address+k*type_size(k为数组的下标,数组存储的是int类型数据,type_size就是4个字节),a[k]元素的结尾地址为起始地址+type_size,这也是为什么大多数编程语言中,数组要从 0 开始编号,而不是从 1 开始
3、数组中的数据是有序的,我们在某个位置插入一个新的元素时,就必须按照刚才的方法搬移 k 之后的数据,这种效率就比较低了;但是,如果数组中存储的数据并没有任何规律,可以直接将第 k 位的数据搬移到数组元素的最后,把新的元素直接放入第 k 个位置以提高插入效率
4、数组每次删除一个元素都要把之后的数据往前移,我们可以先只记录数据已经被删除然后将多次删除操作集中在一起执行以提高删除效率或者当数组没有更多空间存储数据时,我们再触发执行一次真正的删除操作
5、集合无法存储基本类型,比如 int、long,需要封装为 Integer、Long 类,而 Autoboxing、Unboxing 则有一定的性能消耗,所以如果特别关注性能,或者希望使用基本类型,就可以选用数组
6、当要表示多维数组时,用数组往往会更加直观。比如 Object[][] array;而用容器的话则需要这样定义:ArrayList<ArrayList<object>> array

以上是关于数组VS集合的主要内容,如果未能解决你的问题,请参考以下文章

WCF 代理返回数组而不是列表,即使集合类型 == Generic.List

手动 VS 自动阵列澄清

数组和集合之间的区别

java之集合

javase一维数组笔记

在vs2015编译器中如何定义数组以及给数组直接赋值,语言vb