A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 再起来 中级黑马   /  2013-12-18 10:36  /  1360 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 再起来 于 2013-12-18 16:04 编辑

泛型集合List<>Dictionary<>要比非泛型集合ArrayList及Hashtable效率高,那非泛型集合会有一些泛型集合没有的特点吗?如果没有的话,我们就只要有泛型集合就可以了,用不着非泛型集合呀? 我是个初学者,请求大家帮我解决这个问题,谢谢啦

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

2 个回复

倒序浏览
融通的说这些都是为了存储数据而定义的类型,都有各自的优点。
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类对象。
当然他们之间还有很多其他的区分,可以找一些资料看看。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
个人感觉只要掌握list泛型集合 与 Dictionary <TKey,TValue>键值对集合就可以了
下面是两个集合的介绍
List<T>
泛型集合
就是为了专门处理某种类型
ArrayList对应的是        List<类型名>
在尖括号中写什么类型,这个集合就变成了什么类型的集合
添加数据、插入数据、索引访问数据都是这个类型的,不用考虑所有的转化问题

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

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马