问题描述
能否简单代码实例Array与ArrayList的区别?
解决方案
解决方案二:
http://wenku.baidu.com/view/2cb8d572f242336c1eb95e94.html结贴吧
解决方案三:
[Array和ArrayList的区别]#1.Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明。如:int[]array=newarray[3];或int[]array={1,2,3};或ArrayListmyList=newArrayList();这些都是合法的,而直接使用int[]array;是不行的。#2.Array只能存储同构的对象,而ArrayList可以存储异构的对象。同构的对象是指类型相同的对象,若声明为int[]的数组就只能存放整形数据,string[]只能存放字符型数据,但声明为object[]的数组除外。而ArrayList可以存放任何不同类型的数据(因为它里面存放的都是被装箱了的Object型对象,实际上ArrayList内部就是使用"object[]_items;"这样一个私有字段来封装对象的)#3在CLR托管对中的存放方式Array是始终是连续存放的,而ArrayList的存放不一定连续。#4初始化大小Array对象的初始化必须只定指定大小,且创建后的数组大小是固定的,而ArrayList的大小可以动态指定,其大小可以在初始化时指定,也可以不指定,也就是说该对象的空间可以任意增加。#5Array不能够随意添加和删除其中的项,而ArrayList可以在任意位置插入和删除项。[Array和ArrayList的相似点]#1都具有索引(index),即可以通过index来直接获取和修改任意项。#2他们所创建的对象都放在托管堆中。#3都能够对自身进行枚举(因为都实现了IEnumerable接口)。
解决方案四:
[ArrayList的一些特性]#1在研究ArrayList我发现了一个有趣的现象,ArrayList的capacity属性值会随ArrayList中的项的实际大小来发生改变,如下代码:publicstaticvoidMain(string[]args){ArrayListmyList=newArrayList(2);Console.WriteLine("initialcapacity:"+myList.Capacity);intsize=2;for(inti=0;i<size;i++){myList.Add(i);}Console.WriteLine("currentcapacity:"+myList.Capacity);Console.ReadLine();}当size为2时,输出结果中的"currentcapacity"为2,当size为3或4时,"currentcapacity"为4,当size为5~8时,"currentcapacity"为8,当size为9~16时,"currentcapacity"为16,...通过实验可以得出一个结论,那就是每当ArrayList中的实际存在的对象数(ArrayList.Count)超过了自身的Capacity阀值,那么该阀值会自动翻倍。(也可以改变myList生成时的初始值来试试,但结论是一样的)#2通过ArrayList类的TrimToResize()方法可以将ArrayList实例中的空项去除以压缩体积。如以下代码:publicstaticvoidMain(string[]args){ArrayListmyList=newArrayList(5);for(inti=0;i<3;i++){myList.Add(i);}Console.WriteLine("actualcapacity:"+myList.Capacity);myList.TrimToSize();Console.WriteLine("compressedcapacity:"+myList.Capacity);Console.ReadLine();}输出:actualcapacity:5compressedcapacity:3#3在C#2.0中,建议大家尽量使用范型版的ArrayList,即System.Collection.Generics命名空间下的List<T>,这样不但保证了类型安全,而且由于没有了装箱和拆箱的过程,从而提高了对象处理的效率。
解决方案五:
如果LZ在学习时有看一些书。。。我想这两个的疑问不会有。。。区别有这些(可能不全,LZ自己找本书看看):1.Array只能存类型相同的对象,而ArrayList可以存放不同类型的对象2.Array变量在声明同时必须进行实例化,ArrayList可以先声明3.Array是始终是连续存放的,而ArrayList可以连续4.Array必须指定大小,而ArraryList可指定也可不指定5.Array不能随意插入添加项,而ArrayList可以PS:建议使用ArraryList,System.Collection.Generics命名空间下的List<T>
解决方案六:
Array类本身是抽象类可以从它们的成员以及实现的接口看出一些区别
解决方案七:
ArrayList用数组存放对象,并且提供了很多操作数组的方法。
解决方案八:
array非动态,固定长度arraylist动态
解决方案九:
ArrayList是一个List。可以直接拿来使用。Array是一个抽象类,它是所有数组的基类,不能直接使用。
解决方案十:
如果我所在的团队有人讨论arraylist,我一定认为我们的招聘有问题了。这现象至少在2005年以后就不应该在我的项目中出现。我们有很多种类的集合可以使用,最初级地地是List<T>等。