泛型List与ArrayList的比较
来源:互联网 发布:cf视频软件中文版 编辑:程序博客网 时间:2024/06/06 04:13
在讲之前我们先看一下ArrayList的应用:
ArrayList 是一个使用起来非常方便的集合类,无需进行修改即可用来存储任何引用或值类型。 如:
ArrayList list1 = new ArrayList(); list1.Add(1); list1.Add(2); ArrayList list2 = new ArrayList(); list2.Add("1"); list2.Add("2");
问题1:
这种方便是需要付出代价的。添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。
问题2:
另一个限制是缺少编译时类型检查;因为 ArrayList 将把所有项都强制转换为 Object,所以在编译时无法防止客户端代码执行以下操作:
ArrayList list1 = new ArrayList(); list1.Add(1); list1.Add("hehe"); int result = 0; for (int i = 0; i < list1.Count; i++) { result +=int.Parse(list1[i].ToString()); }
尽管将字符串和 int组合在一个 ArrayList 中的做法在创建异类集合时是完全合法的,有时是有意图的,但这种做法更可能产生编程错误,并且直到运行时才能检测到此错误。
解决方法:
而泛型很好的解决了这两个问题;:
List<int> listInt = new List<int>(); listInt.Add(1); listInt.Add(2); List<string> listStr = new List<string>(); listStr.Add("str1"); listStr.Add("str2");
泛型明确的定义了存储的类型;特别适用于列表项是值类型的情况
- 泛型List与ArrayList的比较
- List<T> 与ArrayList 性能比较
- C#中数组Array、ArrayList、泛型List<T>的比较
- ArrayList与List的区别
- ArrayList与List的区别
- List与ArrayList的区别
- list与ArrayList的区别
- List与ArrayList的区别
- List与ArrayList的区别
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- C# 泛型之list<T>与ArrayList<object>比较
- ArrayList Array List性能比较
- Java List与ArrayList的区别
- list与arraylist、linklist的区别
- java中List与ArrayList的区别?
- List与ArrayList的区别和联系
- c++ 中使用stringstream对象来进行类型转换
- 粗解“new”之来龙去脉(三)
- android系统信息(内存,cpu,sd卡,电量,版本)的获取
- vim配色
- Spoj 1771(Dancing Links 精确覆盖变形)
- 泛型List与ArrayList的比较
- VB.net Textbox1输入文字后回车按下Button1按钮
- How to: Create a Custom Action Specific to a List
- HTTP协议,头部不存在 Content-Length 时
- jsp导入包问题&jsp报验证错误解决办法
- Linux 进程上下文和中断上下文
- 在JS中使用readOnly的方法
- SVG 动态图像处理
- apache 403错误 You don’t have permission to access on this server.