黑马程序员技术交流社区
标题:
大家谈谈ArrayList和List<>以及IList<>的区别和用法
[打印本页]
作者:
linuxcc
时间:
2013-11-10 11:58
标题:
大家谈谈ArrayList和List<>以及IList<>的区别和用法
本帖最后由 linuxcc 于 2013-11-10 21:23 编辑
谈谈它们的优点 缺点 和在什么情况下使用最好
作者:
一羽丶轻舟
时间:
2013-11-10 12:13
IList, List , ArrayList C#里面称之为集合,它们可以存放任意类型的东西,在申明或者赋值的时候指定
List 和IList只能存放同一类型的元素。
如果想要让一个‘集合’存放各种类型的实例,如果想要让一个‘数组’存放各种类型的实例,
ArrayList里元素默认是 Object类型的,所以用的时候都要强制转换成所需类型。
作者:
岁月渲染
时间:
2013-11-10 12:50
共同点:
IList, List , ArrayList
通俗一点来讲就是广义的数组,C#里面称之为集合。不同于一般的狭义的数组,它们可以存放任意类型的东西,在申明或者赋值的时候指定。比如你写了一个类Cake,然后想有一个结构来存放很多Cake的实例,那就可以用他们。
区别:
IList与List 通俗一点讲,只能存放同一类型的元素。
比如声明的时候 声明为List
cakes=new List(); 那么就只能用放cake的实例。
在从cakes这个变量中取出元素的时候,取到的直接就是Cake类型。不需要做强行的转换。
如果想要让一个‘数组’存放各种类型的实例,比如有Cake,Juice, Bread,那么就用ArrayList
ArrayList
food=new ArrayList();
注意这里没有指定它装的是什么类型的元素,所以可以随便装咯~
当然,好处不能全让你占完了。在‘取’的时候就要麻烦一点了
ArrayList里元素默认是
Object类型的,所以需要强制转换一下。
再来说IList和List的区别:
我的理解是,IList是一个借口,而List是一个确定的类。
接口,当然就需要你去实现它的函数咯,如果你想这些函数有自己的特色,那么就自己写一个类去实现吧!
然后声明的时候:IList<类型>
kk=new 你实现的类名<类型>();
当然你可以写成:IList<类型>
kk=new List<类型>();
相当于List实现了IList (事实上C# API中是这样定义的)
如果你写成 List<类型>
kk=new List<类型>();
那就意味着你的代码,那些操作List的函数不能有丝毫改变,你得按规定办事。写好是什么,你就用什么。
用法:
以上三个集合的用法都很相似,跟Java也很相似
假如有一个 List
cakes
增、删、改、查的方法:
cakes.Add(Cake t);//增 cakes.Remove(int index);//删 cakes.Remove(Cake t);//删 cakes[]=//修改的数据 //查或者改
更多的操作可以参考C# API
List在创建的时候的时间消耗上明显比ArrayList要大。
List对值类型操作不需要进行装箱;ArrayList需要。
鉴于这两点
,可以得出,当数据量小的时候呢,ArrayList的操作时间上要比List省,
但是在数据量大的时候呢,List就要比ArrayLIst要省了。
可以来看看下面这个例子:
class
Program
...{
static
void Main(string[]
args)
...{
Stopwatch sw = new
Stopwatch();
sw.Start();
IList list
=
new List();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2