什么是数组和ArrayList之间的区别?

7

什么是数组,什么是ArrayList?它们之间有什么区别?

7个回答

14
一个数组是一种高性能的方式,可以存储具有相同类型的一组数据,因为每个元素都紧邻其相邻的元素存储在内存中。这样做可以实现非常快速的访问,因为(a)代码可以进行一些数学计算并快速跳转到数组中的任何位置,(b)元素都被分组在一起,因此它们往往在同一时间内位于内存中(减少页面故障和缓存未命中)。 在.NET中,数组实际上是一个类(System.Array),但是是.NET引擎(CLR)理解的特殊类型的类。由于这个原因,你可以使用标准的数组访问符号(文本语言),例如foo[3] = 99;
然而,在ArrayList中,你正在处理一个集合。在.NET中有几种类型的集合(请参见System.Collections和System.Collections.Specialized命名空间),但是它们支持的接口是关键点(IEnumerable、ICollections、IList等)。如果你查看这些接口的定义,你会发现集合都是关于将事物分组在一起并提供方法来访问它们。但是对于ArrayList而言,如果添加的元素超过了内部数组所能处理的数量,ArrayList会自动创建一个更大的数组,并将旧的数组复制到新数组中。

4
数组(Array)动态数组(ArrayList)的区别如下:
  1. 数组的实现是简单的固定大小数组,动态数组的实现是可变大小数组。
  2. 数组可以包含原始数据类型和对象,但是动态数组只能包含对象元素。
  3. 您不能在数组中使用泛型,但是动态数组允许我们使用泛型来确保类型安全。
  4. 您可以使用 *length* 变量计算数组的长度,但是size() 方法来计算ArrayList的大小。
  5. 数组使用赋值运算符存储元素,但是动态数组使用 *add()* 插入元素。

1

数组:包含相似数据类型元素,大小有限。 ArrayList:是一种集合,能够保存不同数据类型的对象,并且可以动态增长。


0

谈到内存优化 -

数组 - 整个内存块存储在一个特定位置,因此更好。

ArrayList - 它稍微差一些,因为如果一个ArrayList的大小为100,我们需要再添加1个元素,它将搜索101个内存空间,然后分配新的内存。对于像100这样的小数字,不会有太大的差异,但对于较大的数字,可能会导致性能下降。


0

i,数组:数组是静态大小的数据结构,长度固定,创建数组对象后不能更改长度。 ArrayList:ArrayList是动态大小的。每个ArrayList对象都有一个实例变量容量,表示ArrayList的大小。当元素添加到ArrayList时,其容量会自动增长。 2. 数组:它只能包含对象,而数组可以包含基本数据类型和对象。 ArrayList:ArrayList不能包含基本数据类型(如int、float、double)。 例如: ArrayList arraylistobject = new ArrayList(); arraylistobject.add(23); 3. 数组:length变量返回数组的长度。 ArrayList:ArrayList的长度由size()方法提供,每个数组对象均可使用该方法。


0

这是关于Java的吗?我在某个地方读到过: 1. ArrayList是一种收集数据类型,可以使用值/键对。您需要使用.Add属性将值添加到arraylist集合中。您可以使用键访问arraylist。 2. 数组是一种数据类型,可以使用索引访问。


asp.net是Java支持的吗? :) 他在问题中标记了asp.net。 - Arsen Mkrtchyan
可能应该重新标记为特定的.NET语言,而不是ASP.NET。 - Yuriy Faktorovich
这与.NET有关,而不是Java。 - Surya sasidhar
谢谢你,杰基先生,我懂了。 - Surya sasidhar

0

数组: 数组是一种固定长度的数据结构。 在Java中,一旦创建了数组,就无法更改其长度。 数组具有静态特性。

Object[] objArray = new Object[10];

ArrayList: ArrayList是一种可变长度的集合类。 ArrayList根据容量和负载因子在填满时自动调整大小。 Arraylist具有动态性。

ArrayList<Integer> integerList = new ArrayList<Integer>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接