数组与ArrayList的关系与区别

数组与ArrayList的关系与区别

一、数组与ArrayList的主要区别:效率、类型识别和primitive type。
数组([]):最高效;但是其容量固定且无法动态改变;
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。

二、数组与ArrayList的转换(有待补充:见《corejava》110页)
1.ArrayList转换为数组:
ArrayList转换String[]
ArrayList list = new ArrayList();list.add("a");list.add("b");list.add

("c");System.out.println("a="+list);String[] b=(String[])list.toArray

(new String[0]);

2.数组转换为ArrayList(有待补充)

三、Arrays类操纵java中的数组(有待补充)
http://java.ccidnet.com/art/3737/20060627/589715_1.html

四、实现DecisionTree时对ArrayList与String[]的迷惑与解铃(有待补充)

http://www.mysdn.cn/Java/J2SEjichulei/20060914/9172.html

(实际为数组与ArrayList的迷惑)

五、其他
1.数组和ArrayList都表示可以存一组同类型的对象;都使用下标定位和查找元素;
2.数组的定义:
int[] num=new int[10];
Employee[] staff=new Employee[100];

3.ArrayList的使用:
List lst=new ArrayList();
lst.add(employee);

4.起初并没有Arrays类(??不记得在哪看到了,不确定),Arrays类是为了方便数组的一些常用的共同

操作而实现的。

5.ArrayList详解:
http://my.opera.com/wujianrong/blog/index.dml/tag/ArrayList

http://blog.csdn.net/realasker/

6.J2SE 5.0中的泛型
http://www.javanb.com/j2se/1/5246.html

时间: 2024-08-04 14:32:51

数组与ArrayList的关系与区别的相关文章

数组、ArrayList、List的区别

数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List<T>的容量可根据需要自动扩充.修改.删除或插入数据. 数组可以具有多个维度,而 ArrayList或 List< T> 始终只具有一个维度.但是,您可以轻松创建数组列表或列表的列表.特定类型(Object 除外)的数组 的性能优于 ArrayList的性能. 这是因为 ArrayList的元素属于 Object 类型:所以在存储或检索值类型时通常发生装箱和取消装箱操作.不过,在不需要重新分配时(即

C# 中数组、ArrayList、List&lt;T&gt; 区别

一:数组 //定义 string[] strs = new string[5]; //赋值 strs[0] = "A"; strs[1] = "B"; //修改 strs[1] = "C"; //取值 string getStr = strs[1]; 优点:数组在内存中是连续存储的.所以它的索引速度是非常快的.时间复杂度为O(1).而且它的赋值/修改/获取元素也是非常简单的. 缺点:1.定义数组的时候需要指定数组的长度(过长会造成内存浪费.过短会

C#中数组、ArrayList和List三者的区别

在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. [csharp] view plaincopy <span style="font-family:SimSun;font-size:18px;">//数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1]=&quo

(转)C#中数组、ArrayList和List三者的区别

原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. [csharp] view plaincopy <span style="font-family:SimSun;font-size:18px;">//

关于C#中数组、ArrayList与List三个对象的使用区别

我们在使用c#开发中,经常使用到数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 先看看参考文章:http://www.codes51.com/article/detail_98821.html 好,现在我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很多的优点,比如说数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单,比如: string[] s=new string[3]; //赋值 s[0]="a";

【转载】 C#中数组、ArrayList和List三者的区别

原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. <span style="font-family:SimSun;font-size:18px;">//数组 string[] s=new string

C#中数组,ArrayList与List对象的区别

在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很多的优点,比如说数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单,比如: string[] s=new string[3]; //赋值s[0]="a";s[1]="b";s[2]="c"; //修改s[1]="

c#中的数组、ArrayList、List区别

数组 ArrayList 泛型List 总结 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. (1)数组引入的命名空间:using System; (2)Array:用法基本与数组同,引入命名空间:using System; (3)ArrayList:引入命名空间: using System.Collections (4)List:引入命名空间:using System.Collections.Generic; 数组 数组在C#中最早出现的.在内存

C# 数组、ArrayList、List、Dictionary的用法与区别

前言 在工作中经常遇到C#数组.ArrayList.List.Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍.于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的再更新. 初始化 数组: int[] buff = new int[6]; ArrayList: ArrayList buff = new ArrayList(); List: List<int> buff = new List<int>(); Dictio