一、数组与ArrayList的主要区别:效率、类型识别和primitive type。
数组(Array):最高效;但是其容量固定且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率;
建议:
首先使用数组,无法确定数组大小时才使用ArrayList!
1.效率:
数组扩容是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList是Array的复杂版本,ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
2.类型识别:
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。
注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。
从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了。
3.ArrayList可以存任何Object,如String,Employee等,但不支持基本数据类型,除非使用wrapper。
转自:http://www.blogjava.net/flysky19/articles/92775.html
分享到:
相关推荐
在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析。 一、数组Array 数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的...
### C# 中 Array、...- **List**:结合了 Array 和 ArrayList 的优点,是现代 C# 编程中最常用的集合类型之一,支持类型安全性和高效的动态调整大小。 在实际开发过程中,应根据具体需求选择最合适的集合类型。
其中,Array与ArrayList是两种常见的集合形式,它们在很多方面有着相似的功能,但同时也有显著的不同之处。本文将详细探讨Array和ArrayList的异同点,帮助读者更好地理解这两种集合类型的特点及适用场景。 ### ...
这个问题是”在Java中怎样把数组转换为ArrayList?” Element[] array = {new Element(1),new Element(2),new Element(3)}; 1.流行也是被多人接受的答案 普遍也是被多人接受的答案如下: ArrayList...
Arrays.asList()方法是Java中将数组转换为ArrayList最流行的方法之一。该方法将数组转换为一个固定大小的列表,该列表基于原始数组支持。示例代码如下: ```java Element[] array = {new Element(1), new Element(2)...
C#数据结构之Array、ArrayList、Hashtable、Dictionary C#中有多种数据结构可以用来存储和管理数据,今天我们将讨论四种常用的数据结构:Array、ArrayList、Hashtable和Dictionary。这些数据结构都是_Collections_...
ArrayList在添加元素时,如果数组已满,会创建一个新的更大的数组,并将旧数组中的元素复制到新数组中,然后在新数组的末尾添加新元素。 ```java public void add(T element) { if (size == elements.length) { ...
Array是最基本的数组类型,而ArrayList是Java集合框架的一部分,属于动态数组。本教程由程谱CodeRecipe提供,旨在帮助已经掌握了Java基础的初学者深入理解这两种数据结构,并在实际编程中灵活运用。 首先,我们来...
二、ArrayList与Array的区别 ArrayList是.NET框架中的一种动态数组,它继承自ICollection和IList接口,提供了比普通数组更丰富的功能。与自定义的模板类`Array<T>`相比,ArrayList有以下特点: 1. 动态增长:...
- Array在编译时就能进行类型检查,确保插入的元素与数组声明的类型一致,运行时类型错误的可能性较小。 - ArrayList在存储对象时,由于存储的是Object类型的引用,因此在编译时不进行类型检查,但在运行时(JVM...
在C#编程中,Array和ArrayList是两种不同的数据结构,分别代表固定大小的数组和动态大小的列表。本文将深入探讨这两个概念,并解答在提供的代码片段中遇到的问题。 首先,Array是C#中的基本类型,它是一个固定大小...
#### 五、ArrayList与数组之间的转换 将`ArrayList`转换为数组是一种常见的操作,可以通过`toArray`方法轻松实现: ```java ArrayList<Integer> list = new ArrayList(); list.add(1); list.add(2); Integer[] array...
尽管ArrayList可以存储任何类型的对象,但与泛型相比,它在类型安全和性能上有所欠缺。泛型的引入解决了这些问题,泛型允许在编译时指定类型,从而提供了类型安全,同时减少了不必要的类型转换和提高了运行时性能。...
Array和ArrayList的区别与联系 Array是Java中的数组,它是相同数据类型的集合,声明时必须指定数据类型和大小,数组的元素个数是固定的。数组有三种声明方式:int[] a = new int[10]; int a[] = new int[10]; int a...
C# 中 Array和 ArrayList详解及区别 一、Array 的用法 type[] typename=new type[size]; 或者 type[] typename=new type[]{ }; Array类型的变量在声明的同时必须进行实例化(如果初始化至少得初始化数组...
在Java中,ArrayList与数组之间的转换可以通过以下方法实现: 1. **ArrayList转数组**: 当你需要将ArrayList中的元素保存到数组中时,可以直接使用ArrayList的`toArray()`方法。如示例所示,可以创建一个指定类型...
本文以实例形式详细讲述了Python列表list数组array用法。分享给大家供大家参考。具体如下: Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 复制代码 代码如下:sample_...
代码如下:using System.Collections; ArrayList a = new ArrayList(); a.Add(“a”);//这里”a”可以改成你要取出的字符串 a.Add(“b”); 运行后a就相当于一个... 您可能感兴趣的文章:C#中数组Array,ArrayList,泛型
本文主要探讨了几个常用的集合类,包括Array、ArrayList、List、Hashtable、Dictionary, TValue>、Stack和Queue,以及它们的特点和应用场景。 1. **数组**(Array):数组是最基本的数据结构,它是一个固定大小的...