ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:300.50KB ,
资源ID:3526559      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3526559.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C六种集合.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

C六种集合.doc

1、C#的 6 种常用集合类大比拼(1)【引自清清月儿的博客】一、先来说说数组的不足(也可以说集合与数组的区别)1.数组是固定大小的,不能伸缩。虽然 System.Array.Resize 这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的。2.数组要声明元素的类型,集合类的元素类型却是 object。3.数组可读可写不能声明只读数组。集合类可以提供 ReadOnly 方法以只读方式使用集合。4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有

2、定制的下标类型,对于队列和栈根本就不支持下标访问! 二、下面讲述 6 种常用集合1.ArrayList 类using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1.class Program.static void Main(string args).ArrayList al = new ArrayList();al.Add(100);/单个添加foreach (int number in new int6 . 9,

3、 3, 7, 2, 4, 8 ).al.Add(number);/集体添加方法一int number2 = new int2 . 11,12 ;al.AddRange(number2);/集体添加方法二al.Remove(3);/移除值为 3 的al.RemoveAt(3);/移除第 3 个ArrayList al2 = new ArrayList(al.GetRange(1, 3);/新 ArrayList 只取旧 ArrayList 一部份Console.WriteLine(“遍历方法一:“);foreach (int i in al)/不要强制转换.Console.WriteLine(i

4、);/遍历方法一Console.WriteLine(“遍历方法二:“);for (int i = 0; i != al2.Count; i+)/数组是length.int number = (int)al2i;/一定要强制转换Console.WriteLine(number);/遍历方法二图 12.Stack 类栈,后进先出。push 方法入栈,pop 方法出栈。 using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplicatio

5、n1.class Program.static void Main(string args).Stack sk = new Stack();Stack sk2 = new Stack();foreach (int i in new int4 . 1, 2, 3, 4 ).sk.Push(i);/填充sk2.Push(i);foreach (int i in sk).Console.WriteLine(i);/遍历sk.Pop();Console.WriteLine(“Pop“);foreach (int i in sk).Console.WriteLine(i);sk2.Peek();/弹出最

6、后一项不删除 Console.WriteLine(“Peek“);foreach (int i in sk2).Console.WriteLine(i);while (sk2.Count != 0).int i = (int)sk2.Pop();/清空sk2.Pop();/清空Console.WriteLine(“清空“);foreach (int i in sk2).Console.WriteLine(i);图 23.Queue 类队列,先进先出。enqueue 方法入队列,dequeue 方法出队列。 using System;using System.Collections.Generi

7、c;using System.Text;using System.Collections;namespace ConsoleApplication1.class Program.static void Main(string args).Queue qu = new Queue();Queue qu2 = new Queue();foreach (int i in new int4 . 1, 2, 3, 4 ).qu.Enqueue(i);/填充qu2.Enqueue(i);foreach (int i in qu).Console.WriteLine(i);/遍历qu.Dequeue();C

8、onsole.WriteLine(“Dequeue“);foreach (int i in qu).Console.WriteLine(i);qu2.Peek();/弹出最后一项不删除Console.WriteLine(“Peek“);foreach (int i in qu2).Console.WriteLine(i);while (qu2.Count != 0).int i = (int)qu2.Dequeue();/清空qu2.Dequeue();/清空Console.WriteLine(“清空“);foreach (int i in qu2).Console.WriteLine(i);

9、图 34.Hashtable 类哈希表,名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int 型数据,使用这个键的值生成该 int 型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。 using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1.class Progr

10、am.public static void Main()./ Creates and initializes a new Hashtable.Hashtable myHT = new Hashtable();myHT.Add(“one“, “The“);myHT.Add(“two“, “quick“);myHT.Add(“three“, “brown“);myHT.Add(“four“, “fox“);/ Displays the Hashtable.Console.WriteLine(“The Hashtable contains the following:“);PrintKeysAndV

11、alues(myHT);public static void PrintKeysAndValues(Hashtable myHT).foreach (string s in myHT.Keys)Console.WriteLine(s);Console.WriteLine(“ -KEY- -VALUE-“);foreach (DictionaryEntry de in myHT)Console.WriteLine(“ 0: 1“, de.Key, de.Value);Console.WriteLine();图 45.SortedList 类与哈希表类似,区别在于 SortedList 中的 Ke

12、y 数组排好序的。 using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1.class Program.public static void Main().SortedList sl = new SortedList();sl“c“ = 41;sl“a“ = 42;sl“d“ = 11;sl“b“ = 13;foreach (DictionaryEntry element in sl).string s = (st

13、ring)element.Key;int i = (int)element.Value;Console.WriteLine(“0,1“,s,i);图 56.NameValueCollection 类官方给 NameValueCollection 定义为特殊集合一类,在 System.Collections.Specialized下。System.Collections.Specialized 下还有 HybridDicionary 类,建议少于 10 个元素用HybridDicionary,当元素增加会自动转为 HashTable。System.Collections.Specialized

14、下还有 HybridDicionary 类,字符串集合。System.Collections.Specialized 下还有其他类大家可以各取所需!言归正转主要说 NameValueCollection,HashTable 和 NameValueCollection 很类似但是他们还是有区别的,HashTable 的 KEY 是唯一性,而 NameValueCollection 则不唯一! using System;using System.Collections.Generic;using System.Collections;using System.Collections.Special

15、ized;namespace ConsoleApplication1.class Program.static void Main(string args).System.Collections.Hashtable ht = new System.Collections.Hashtable();ht.Add(“DdpMDisplaySeq“.Trim(), “Display Sequence“.Trim();ht.Add(“DdpMNameChi“.Trim(), “Name (Chinese)“.Trim();ht.Add(“DdpMNameEng“.Trim(), “Name (Engli

16、sh)“.Trim();ht.Add(“Comment“.Trim(), “Comment“.Trim();ht.Add(“DdpMMarketCode“.Trim(), “Market Code“.Trim();foreach (object key in ht.Keys).Console.WriteLine(“0/12,3“, key, htkey, key.GetHashCode(), htkey.GetHashCode();Console.WriteLine(“ “);NameValueCollection myCol = new NameValueCollection();myCol

17、.Add(“DdpMDisplaySeq“.Trim(), “Display Sequence“.Trim();myCol.Add(“DdpMNameChi“.Trim(), “Name (Chinese)“.Trim();myCol.Add(“DdpMNameChi“.Trim(), “Name (English)“.Trim();myCol.Add(“Comment“.Trim(), “Comment“.Trim();myCol.Add(“DdpMMarketCode“.Trim(), “Market Code“.Trim();foreach (string key in myCol.Ke

18、ys).Console.WriteLine(“0/1 2,3“, key, myColkey, key.GetHashCode(), myColkey.GetHashCode();图 6C#泛型集合揽胜为什么要用泛型集合?在 C# 2.0 之前,主要可以通过两种方式实现集合:a.使用 ArrayList直接将对象放入 ArrayList,操作直观,但由于集合中的项是 Object 类型,因此每次使用都必须进行繁琐的类型转换。b.使用自定义集合类比较常见的做法是从 CollectionBase 抽象类继承一个自定义类,通过对 IList对象进行封装实现强类型集合。这种方式要求为每种集合类型写一个

19、相应的自定义类,工作量较大。泛型集合的出现较好的解决了上述问题,只需一行代码便能创建指定类型的集合。什么是泛型?泛型是 C# 2.0 中的新增元素 (C+中称为模板),主要用于解决一系列类似的问题。这种机制允许将类名作为参数传递给泛型类型,并生成相应的对象。将泛型(包括类、接口、方法、委托等)看作模板可能更好理解,模板中的变体部分将被作为参数传进来的类名称所代替,从而得到一个新的类型定义。泛型是一个比较大的话题,在此不作详细解析,有兴趣者可以查阅相关资料。怎样创建泛型集合?主要利用 System.Collections.Generic 命名空间下面的 List泛型类创建集合,语法如下:List ListOfT = new List();其中的“T“就是所要使用的类型,既可以是简单类型,如 string、int,也可以是用户自定义类型。下面看一个具体例子。定义 Person 类如下:class Personprivate string _name; /姓名private int _age; /年龄/创建 Person 对象

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。