黑马程序员技术交流社区

标题: 集合的使用场景是什么? [打印本页]

作者: 江湖一浪人    时间: 2013-6-11 16:21
标题: 集合的使用场景是什么?
本帖最后由 江湖一浪人 于 2013-6-14 16:20 编辑

各位黑马,你们好!
最近学习了集合的应用,但对于集合有这么多,我现在都糊涂了,集合的作用和各自的应用场景是什么。
就是说什么时候适合用List,什么时候用 Dictionary之类的问题?
{:soso_e132:}

作者: 无__畏    时间: 2013-6-11 16:24
List<student> 参数可以是任何类型   

Dictionary<key,Value>   键值对   

作者: popoluno    时间: 2013-6-11 16:27
ArrayList通过添加和删除元素就可以动态改变数组的长度。但跟一般的数组比起来,速度慢些。ArrayList的索引会自动分配和调整,而对于值类型,特定类型(不包括Object)的Dictionary的性能较优!
作者: popoluno    时间: 2013-6-11 16:32
补充:在遍历时,Dictionary会产生大量的内存换页操作,而List只需要进行最少的内存换页即可,这就是List和Dictionary在遍历时效率差异的根本原因。谈不上哪种好,多编程就会体会到适合的场景应用了
作者: ljh4282158    时间: 2013-6-11 16:35
给你归纳一下总结一下:
                泛型和集合的区别:相同点元素的个数都是可变的
                              不同点:泛型中的数据类类型是统一的,集合的数据类型是object,每次向集合中赋值取值时,很有可能在执行装箱拆箱操作,效率会底
                 集合与数组的比较:
                                 相同点:都是用来存放元素的
                                不同点:数组的长度是固定的,集合的长度和数据类型是可变的

            哈希表 和集合的比较:
                     相同点:元素的数据类型都是object;元素的个数都是可变化的
                     不同点:集合中存放的是单个的元素,哈希表存放的是键值对
           字典与哈希表的比较
                      相同点:存放的都是键值对
                       不同点:哈希表的键和值都是object类型,字典的键和值都是统一的数据类型

  


  自己整理的笔记、求技术分
作者: 江湖一浪人    时间: 2013-6-11 16:36
学习了!谢谢你们
作者: 王洪磊    时间: 2013-6-11 20:38
List<T>属于泛型的使用,也就是说它可以用来存储各种类型,当使用list中的值时不需要进行UNbox的操作(也就是类型的转换),但相比之下Arraylist虽然可以存储各种类型,但需要进行unbox操作。Dictionary<key,value>很显然是对键值对的存储的,利用Dictionary可以很好的进行键值对的存储以便需要的时候根据键名来索引到值。
作者: zpzhangwenhan    时间: 2013-6-11 20:55
LIst<T>是泛型集合,可以自定义集合的类型,Dictionary<T,T>是字典,也是反省集合,两者都能自定义类型约束

List是通过索引的方式来存取值的,类似数组,使用场合 和数组相同,但它能随意的变更元素的数目

DIctionary是通过Key(就是第一个T)来存取值的,比如火星文转换
作者: 甘斌斌    时间: 2013-6-11 21:16
集合可以简单的理解为一个不定长度的数组,他的好处是初始化的时候不必知道数组到底有多长,而是在初始化之后对数据进行添加。
这种类型对数据库操作尤为有用,因为在执行查询语句的时候我们也不知道到底会返回多少行数据。
比如ArrayList al = new ArrayList();
al.Add("test1");
al.Add("test2");
al.Add("test3");
访问的时候还是用索引访问集合的元素al[0];al[1];al[2];
上面只是一个简单的例子,关于集合MS定义了IList接口,并有很多实现类,具体内容查查MSDN吧...能找到很多相关知道。
作者: 江湖一浪人    时间: 2013-6-11 22:18
谢谢!明白了




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