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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 诱惑灵魂 中级黑马   /  2013-12-26 23:27  /  1334 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 诱惑灵魂 于 2013-12-30 14:45 编辑

ArrayList

List

Hashtable


Dictionary


问:当我们在coding的时候应该如何使用,以及各集合的优缺点,谢谢!

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2

查看全部评分

5 个回复

倒序浏览
泛型集合:list、dictionary,声明时必须制定泛型:如1、List<string> list=new List<string>( ),添加内容:list.Add("zhang");list.Add("yong");2、第二种初始化List<string> list2=new List<string>( ){"zhang","yong"};,而dictionary必须声明成键值对泛型:如Dictionary<char,int> dic=new Dictionary<char,int>();dic.Add('c',2); dic.Add('d',3);等等,具体的查询遍历这里就不再说了。
非泛型集合:ArrayList对应着list,声明:Arraylist al=new Arraylist();hashtable对应dictionary,声明:Hashtable ht=new Hashtable();ht.Add('z',5);那么ht对象中的数据类型必须是char,int类型,不能放ht.Add("shing",6);这是错误的。
说一下泛型集合,非泛型集合的区别:泛型集合效率高于非泛型集合,这是因为泛型集合在存、取数据的时候对数据不进行装箱、拆箱的操作,而非泛型集合,则对数据进行装箱、拆箱的操作。
比如:声明一个Person类,派生出student、teacher类。
声明List<student> stu=new List<student>();可存放stu.Add(student对象);,不可存放stu.Add(teacher对象);如果声明了List<Person> per=new List<Person>();可以放置person,student,teacher对象。
以上为个人理解,不足之处请指出。

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2

查看全部评分

回复 使用道具 举报 1 0
ArrayList:可以装任意类型的值  比如一个ArrayList中可以装int  装string  装object   装进去的时候很简单但是去数据的时候要拆箱 很麻烦  尽量让让程序不要涉及到拆箱装箱   所所以大部分情况是用Lsit集合

List:声明集合时必须确定要装入的数据类型,一般情况我们都用List   但当装入数据类型多种的时候用ArrayList
Hashtable:和ArrayList相同   可以装任意类型   涉及到拆装箱
Dictionary:和List一样  必须声明类型

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2

查看全部评分

回复 使用道具 举报
熟记List,Dictionary:一个是集合,一个是字典,剩余两个算是比较过时的我们在学的时候,学习剩下那两个的原理,但是现在用的时候,微软推荐用我刚才说的两个。

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2

查看全部评分

回复 使用道具 举报
译自:Smashing Magazine

中文:Zen Coding: 一种快速编写HTML/CSS代码的方法

在本文中我们将展示一种新的使用仿CSS选择器的语法来快速开发HTML和CSS的方法。它由Sergey Chikuyonok开发。
你在写HTML代码(包括所有标签、属性、引用、大括号等)上花费多少时间?如果你的编辑器有代码提示功能,你编写的时候就会容易些,但即便如此你还是要手动敲入很多代码。

在JavaScript方面,当我们想要在一个页面上获取某个特定的元素时,我们就会遇到同样的问题,我们必须写很多代码,这就变得难于维护和重 用。JavaScript框架应运而生,它们同时引入了CSS选择器引擎。现在,你可以使用简单的CSS表达式来获取DOM元素,这相当酷。
但是,如果你不仅仅可以用CSS的选择器布局和定位元素,还能生成代码会怎么样?比如,如果你这样写:
div#content>h1+p
…然后就可以看到这样的输出:
<div id="content">
<h1></h1>
<p></p>
</div>
有些迷惑吧?今天,我将向你介绍Zen Coding,一组用于快速HTML和CSS编码的工具。最初由Vadim Makeev在2009年4月提出(文章为俄语),由鄙人(也就是我)开发了数月并最终达到比较成熟的状态。Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上下文无关的HTML标签对匹配器。看一下这个演示视频来看一下它们能为你做些什么。

查看视频:http://v.youku.com/v_show/id_XMTM4NDQwNzgw.html

注意:该视频原版位于Vimeo,但是要看的话需要翻[和谐]墙先,地址在这里:http://vimeo.com/7405114,上面的视频是我费尽周折从Vimeo上下载下来上传到优酷的,上传后质量竟被大打折扣了,囧。youtube上也有一份视频,是基于Aptana的演示,一样很精彩:http://www.youtube.com/watch?v=ug84Ypwqfzk。PS:貌似youtube要比Vimeo翻[和谐]墙容易些,不过如何翻[和谐]墙不在本站讨论范围。
回复 使用道具 举报
C#数组和集合专题6(泛型集合List)
泛型集合
①、C#中使用泛型的优点和使用
优点:
a.类型安全:使用泛型集合编译器会在编译期间检查要放入集合对象的数据类型,如果发现不是某种特定的类型就会报错,这样就可以避免发生许多运行时错误,即类型安全。
b.提高性能:由于明确了数据类型,所以在存取数据不会发生类型的转换,特别是存取值类型是不会发生装箱和拆箱操作。
c.使用泛型类型可以最大限度地重用代码
使用:
a.泛型最常见的用途是创建集合类。
b.可以对泛型类进行约束以访问特定数据类型的方法。
c.可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
d.关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。
②、System.Collections.Generic命名空间
泛型集合类                  描述
List<T>                     一般用于替代ArrayList类,与ArrayList很相似
Dictionary<TKey,TValue>     存储键值对的集合泛型类
SortedList<TKey,TValue>     类似于Dictionary<TKey,TValue>,但按键自动排序
LinkedList<T>               双向链表
Queue<T>                    先进先出的队列类
Stack<T>                    后进先出的堆栈类
C#中没有ArrayList<T>和Hashtable<Tkey,TValue>这两个泛型集合类。
凡是有对应泛型类型的类就尽量不要使用早期提供的非泛型类型的类。下面的泛型类型对应于低版本提供的类型:
       泛型类                   低版本提供的非泛型类
       List<>                        ArrayList
       Dictionary<>                  Hashtable
       Queue<>                       Queue
       Stack<>                       Stack
       SortedList<>                  SortedList
③、创建泛型集合类的新实例
泛型集合类<数据类型> 实例名=new 泛型集合类<数据类型>();
List<int> lstStr=new List<int>();
List<Employee> lstStu=new List<Employee>();
还是借用前面的Employee的代码,把main修改为
static void (string[] args)
       {
          SortedList<int,Employee> sl = new SortedList<int,Employee>(); //存储员工信息
           sl.Add(1, new Employee(1, "小雨", 3000));
           sl.Add(4, new Employee(4, "小华", 2000));
           sl.Add(3, new Employee(3, "小刚", 1500));
           sl.Add(2, new Employee(2, "小芳", 3500));
           //把ht的键对象全部复制到ArrayList中
           List<int> list = new List<int>(sl.Keys); //存储员工号信息
         //list.AddRange(sl.Keys);
           list.Sort();
           //排序完成输出
           for (int i = 0; i < list.Count; i++)
           {
               int e = list[i];
               Employee temp = (Employee)sl[e];
               Console.WriteLine(temp);
           }
}

评分

参与人数 1技术分 +3 收起 理由
陈福军 + 3

查看全部评分

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