Array 与 ArrayList区别

问题描述

能否简单代码实例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>等。

时间: 2024-09-22 05:36:41

Array 与 ArrayList区别的相关文章

C#中数组Array,ArrayList,泛型List详细对比_C#教程

在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序集合.数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合. Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义. 数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也非常简单. Array数组具体用法: using System; names

C#数组之 []、List、Array、ArrayList应用

 代码如下 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; public partial class _Default : System.Web.UI.Page {     protected void Pa

asp.net C#中Array与ArrayList用法及转换

1. Array-数组 在C#中定义一个数组的方法一般为: Data Type []  Array=new DataType [Size]; 其中Data Type可以是基本数据类型和对象类型数据,Size是数组元素的个数. 例子定义一个int类型的数据来表示一个班上的人数 int [] classNum=new int[20]; type[]   typename=new type[size];  如 int[] a=new int[2];string[] str=new string[5];

C#中的Array和ArrayList

一.Array的一些方法 int[] nums = { 5, 4, 6, 3, 14, 9, 8, 17, 1, 24, -1, 0 }; Console.Write("排序之前order: "); foreach (int i in nums) Console.Write(i + " ");Console.WriteLine(); int before = Array.IndexOf(nums, 14); Console.WriteLine("befor

如何定义一个可以无初始长度的array,不用arraylist?

问题描述 比如我定义一个string[]数组,然后可以随意赋值,数组的大小是实际存放的元素的大小?我知道arraylist可以实现,但是array是否也可以实现呢 解决方案 解决方案二:string[]strA=newstring[]{"aa","bb","cc"};解决方案三:..明确的说不可以..解决方案四:不行解决方案五:以下方式可以正常运行,LZ可以试试看.string[]str;str=newstring[]{"aa"

PHP中array_merge和array相加的区别分析_php技巧

首先来看看键名是string,两者区别: 复制代码 代码如下: <?php$arr1 = array('a'=>'PHP');$arr2 = array('a'=>'JAVA');//如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面数组元素值print_r(array_merge($arr1,$arr2)); //Array ( [a] => JAVA )//如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果print_r($arr1+$ar

asp.net c#中[],List,Array,ArrayList的区别

asp教程.net c#中[],List,Array,ArrayList的区别 [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. List 类是 ArrayList 类的泛型等效类,某些情况下,用它比用数组和 ArrayList 都方便. 我们假设有一组数据,其中每一项数据都是一个结构. public struct Item {     public int Id;     public string DisplayText; } 注意结构是不能给实例字段赋值的,即 p

java集合框架05——ArrayList和LinkedList的区别

本文为博主原创文章,转载请注明出处:http://blog.csdn.net/eson_15/article/details/51145788 前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括         先来回顾一下List在Collection中的的框架图:     从图中我们可以看出:         1. List是一个接口,它继承与Collection接口,代表有序的队列.       

C#中数组、ArrayList和List三者的区别详解_C#教程

在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. //数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1]="b"; //修改 s[1]="a1";  但是数组存在一些不足的地方.在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组的长