黑马程序员技术交流社区

标题: 非泛型集合与泛型集合 [打印本页]

作者: 再起来    时间: 2013-12-18 10:36
标题: 非泛型集合与泛型集合
本帖最后由 再起来 于 2013-12-18 16:04 编辑

泛型集合List<>Dictionary<>要比非泛型集合ArrayList及Hashtable效率高,那非泛型集合会有一些泛型集合没有的特点吗?如果没有的话,我们就只要有泛型集合就可以了,用不着非泛型集合呀? 我是个初学者,请求大家帮我解决这个问题,谢谢啦
作者: 红鹰(Jake)    时间: 2013-12-18 13:05
融通的说这些都是为了存储数据而定义的类型,都有各自的优点。
1、泛型集合List<>,Drictionary<>存数的数据信息类型可以在定义变量的时候定义,在存数据、和取数据的时候没有封装、拆箱的操作,因此效率会大于非泛型类的效率。
比如:定义一个Person类,Teacher类和Student类继承person类
定义一个泛型:
list<Student> student=new List<Student>();
student.Add();//中只能添加Student实例化的对象,而我们要添加Teacher类实例化的对象则不行。
2、我现在定义一个非泛型集合:
ArrayList     list=new ArrayList();
则list.Add();//可以添加Student类和Teacher类、Person类的实例化对象,当然这几个类的属性要统一,不然也会有错。
这种情况在添加的时候会隐式转换,Teacher、Student实例化对象都会转化为Person类对象。
当然他们之间还有很多其他的区分,可以找一些资料看看。
作者: 雨中恋人    时间: 2013-12-18 13:49
个人感觉只要掌握list泛型集合 与 Dictionary <TKey,TValue>键值对集合就可以了
下面是两个集合的介绍
List<T>
泛型集合
就是为了专门处理某种类型
ArrayList对应的是        List<类型名>
在尖括号中写什么类型,这个集合就变成了什么类型的集合
添加数据、插入数据、索引访问数据都是这个类型的,不用考虑所有的转化问题

Dictionary <TKey,TValue>
默认提供命名空间,提倡使用
Hashtable对应的是        Dictionary<键的类型, 值的类型>
在尖括号中填入键的类型与值的类型,那么这个集合就变成了一个指定的键值对模型
其使用方式与Hashtable一样






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2