2016 - 2024

感恩一路有你

java中如何给listarray赋值 array与array list有什么区别?

浏览量:2239 时间:2023-05-05 16:49:52 作者:采采

array与array list有什么区别?

数组和数组列表的异同

首先,数组和数组列表的区别

# 类型的变量在声明时必须同时实例化(至少要初始化数组的大小),而ArrayList可以先声明即可。

比如:

int[] array新数组[3]

或int[] array {1,2,3}

或ArrayList myList new ArrayList()

这些都是合法的,但是不能直接使用int[]数组。

#只能存储同构对象,ArrayList可以存储异构对象。

同构对象是指同一类型的对象。如果声明为int[]的数组只能存储整形数据,string[]只能存储字符数据,声明为object[]的数组除外。

ArrayList可以存储任何不同类型的数据(因为它包含了boxed Object类型的对象,实际上ArrayList使用了类似#34object[] _items#34这样的私有字段来封装对象)。

如何在CLR托管对中存储#3

数组总是连续存储的,而ArrayList并不总是连续存储的。

#4初始化大小

数组对象的初始化必须只指定大小,创建的数组大小是固定的,而ArrayList的大小是可以动态指定的,它的大小可以在初始化时指定,也可以不指定,也就是说对象的空间可以任意增加。

#5阵列can t随意添加和删除项,而ArrayList可以在任何地方插入和删除项。

第二,数组和ArrayList的相似之处

#1有索引,即任何项目都可以通过索引直接获取和修改。

#2他们创建的所有对象都放在托管堆中。

#3可以枚举自己(因为都实现了IEnumerable接口)。

注意:

在C#2.0中,建议尽量使用ArrayList,即命名空间中的ListltTgt,这样既保证了类型安全,又因为没有打包和解包的过程,提高了对象处理的效率。

arraylist指定初始容量还会扩容吗?

经常使用ArrayList。一般来说,在使用它的时候,会这样声明:

List arrayList new ArrayList()

如果如上所述使用默认构造方法,则初始容量设置为10。当数组列表中的元素超过10个时,内存将被重新分配。空间将数组的大小增加到16。

通过调试我们可以看到动态增长的数字变化:10-GT16-GT25-GT38-GT58-GT88-GT…

例如:

新的数组列表(4)

将ArrayList的默认容量设置为4。当ArrayList中的元素超过四个时,内存空间将被重新分配,以将数组的大小增加到7。

通过调试,我们可以看到动态增长的数字变化:4-gt7-gt11-gt17-gt26-gt…

那么容量变化的规律是什么呢?请看下面的公式:

((旧容量* 3)/2) 1

一旦容量发生变化,就会带来额外的内存开销和时间开销。

因此,在容量已知的情况下,建议按以下声明:

新数组列表(CAPACITY_SIZE)

ArrayList 对象 声明 列表 容量

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。