演示System.Collections.Generic的各容器类的用法.

包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSet,SortedSet,List,Queue,Stack等

 System.Collections.Generic.Dictionary<>;       //键/值对集合
System.Collections.Generic.KeyValuePair<>; //键/值对结构, 作为 Dictionary<> 的一个元素存在
System.Collections.Generic.SortedDictionary<>; //相当于 Key 能自动排序 Dictionary<>
System.Collections.Generic.SortedList<>; //和 SortedDictionary<> 功能相似, 但内部算法不同, 其 Keys、Values 可通过索引访问 System.Collections.Generic.HashSet<>; //无序、无重复的元素集合
System.Collections.Generic.SortedSet<>; //相当于能自动排序的 HashSet<>
System.Collections.Generic.List<>; //相当于泛型的 ArrayList, 元素可重复、可排序、可插入、可索引访问 System.Collections.Generic.Queue<>; //队列, 先进先出
System.Collections.Generic.Stack<>; //堆栈, 后进先出 System.Collections.Generic.LinkedList<>; //双向链表
System.Collections.Generic.LinkedListNode<>; //LinkedList<> 的节点 System.Collections.Generic.SynchronizedCollection<>; //线程安全的集合
System.Collections.Generic.SynchronizedReadOnlyCollection<>; //线程安全的只读集合
System.Collections.Generic.SynchronizedKeyedCollection<>; //线程安全的键/值集合 Dictionary<>、KeyValuePair<>:
protected void Button1_Click(object sender, EventArgs e)
{
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("K1", );
dict["K2"] = ;
dict.Add("K3", ); string str = "";
foreach (KeyValuePair<string, int> k in dict)
{
str += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-123; K2-456; K3-789;
}
TextBox1.Text = str;
} SortedDictionary<>:
protected void Button1_Click(object sender, EventArgs e)
{
SortedDictionary<string, int> dict = new SortedDictionary<string, int>();
dict.Add("K3", );
dict["K1"] = ;
dict.Add("K2", ); SortedDictionary<string, int>.KeyCollection ks = dict.Keys;
SortedDictionary<string, int>.ValueCollection vs = dict.Values; string s1, s2, s3;
s1 = s2 = s3 = ""; foreach (KeyValuePair<string, int> k in dict)
{
s1 += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-111; K2-222; K3-333;
} foreach (string s in ks) { s2 += s + "; "; } //K1; K2; K3;
foreach (int n in vs) { s3 += n.ToString() + "; "; } //111; 222; 333; TextBox1.Text = s1 + "\\n" + s2 + "\\n" + s3;
} SortedList<>:
protected void Button1_Click(object sender, EventArgs e)
{
SortedList<string, int> dict = new SortedList<string, int>();
dict.Add("K3", );
dict["K1"] = ;
dict.Add("K2", ); string s1, s2, s3;
s1 = s2 = s3 = ""; foreach (KeyValuePair<string, int> k in dict)
{
s1 += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-111; K2-222; K3-333;
} s2 = dict.Keys[]; //K1
s3 = dict.Values[].ToString(); // TextBox1.Text = s1 + "\\n" + s2 + "\\n" + s3;
} HashSet<>、SortedSet<>:
protected void Button1_Click(object sender, EventArgs e)
{
HashSet<string> hs = new HashSet<string>();
hs.Add("ccc");
hs.Add("bbb");
hs.Add("aaa"); SortedSet<string> ss = new SortedSet<string>();
ss.Add("ccc");
ss.Add("bbb");
ss.Add("aaa"); string s1 = "", s2 = ""; foreach (string s in hs) { s1 += s + " "; } //ccc bbb aaa
foreach (string s in ss) { s2 += s + " "; } //aaa bbb ccc TextBox1.Text = s1 + "\\n" + s2;
} List<>:
protected void Button1_Click(object sender, EventArgs e)
{
List<int> list = new List<int>();
list.Add();
list.Add();
list.Insert(, ); string s1, s2 = "", s3, s4 = ""; s1 = list[].ToString(); //
for (int i = ; i < list.Count; i++) { s2 += list[i].ToString() + " "; } //33 11 22 list.Sort(); s3 = list[].ToString(); //
foreach (int n in list) { s4 += n.ToString() + " "; } //11 22 33 TextBox1.Text = s1 + "\\n" + s2 + "\\n" + s3 + "\\n" + s4;
} LinkedList<>、LinkedListNode<>:
protected void Button1_Click(object sender, EventArgs e)
{
LinkedList<string> list = new LinkedList<string>();
list.AddFirst("aaa");
list.AddLast("bbb");
list.AddFirst("ccc");
list.AddAfter(list.First, "ddd");
list.AddBefore(list.Last, "eee"); string s1 = "", s2 = "", s3 = "", s4 = "", s5 = ""; foreach (string s in list) { s1 += s + " "; } //ccc ddd aaa eee bbb LinkedListNode<string> node = list.First;
s2 = node.Value.ToString(); //ccc
node = node.Next;
s3 = node.Value.ToString(); //ddd
node = list.Last.Previous.Previous;
s4 = node.Value.ToString(); //aaa list.Remove("eee");
list.RemoveFirst();
list.RemoveLast(); node = list.First;
while (node != null)
{
s5 += node.Value.ToString() + " "; //ddd aaa
node = node.Next;
}
TextBox1.Text = s1 + "\\n" + s2 + "\\n" + s3 + "\\n" + s4 + "\\n" + s5;
}
 

System.Collections.Generic的各容器类的用法的更多相关文章

  1. NHibernate无法将类型“System.Collections.Generic.IList<T>”隐式转换为“System.Collections.Generic.IList<IT>

    API有一个需要实现的抽象方法: public IList<IPermission> GetPermissions(); 需要注意的是IList<IPermission>这个泛 ...

  2. 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转换为类型“System.Collections.Generic.IList`1

    在WPF中DataGrid 选择事件中获取SelectedItems 报错如下 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转 ...

  3. Unity3d:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1

    问题描述:如图,在调试状态下说:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1<ignore_js_op> ...

  4. using System.Collections.Generic;

    public class CommonClass { public static void ShowInt(int iValue) { //typeof(CommonClass) typeof关键字 ...

  5. webservice asmx 无法序列化接口 System.Collections.Generic.IList

    转载自:http://www.cnblogs.com/chenhuzi/p/4178194.html 今天有位同事在方法里加了一个IList<entity> 的返回值,也没有测试,直接发布 ...

  6. Web Service接口返回泛型的问题(System.InvalidCastException: 无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”)

    在使用C#写Web Service时遇到了个很奇怪的问题.返回值的类型是泛型(我用的是类似List<string>)的接口,测试时发现总是报什么无法转换为对象的错误,百思不得其解. 后来在 ...

  7. C# 经典入门12章-System.Collections.Generic命名空间

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtUAAAAsCAIAAAAl09PEAAAgAElEQVR4nOx95Vscyd7285cMPrg7Aw ...

  8. C# System.Collections.Generic.Dictionary

    using System; using System.Collections.Generic; public class Example { public static void Main() { / ...

  9. 无法将类型“System.Collections.Generic.List<anonymous type:string ClassID,string ClsssName>”隐式转换为“System.Collections.Generic.List<Ecology.Model.EnergyFlowGraph>”

    无法将类型“System.Collections.Generic.List<anonymous type:string ClassID,string ClsssName>”隐式转换为“Sy ...

随机推荐

  1. DW安装步骤

    Adobe Dreamweaver CC 2015破解步骤 Adobe Dreamweaver CC 2015的安装包和破解补丁可以在这里下载.链接: http://pan.baidu.com/s/1 ...

  2. tfs中如何创建团队项目及如何操作团队项目

    创建团队项目集合 tfs server管理控制台\团队项目集合页面.选择'创建集合'链接,按向导即可创建项目集合. 创建团队项目 创建好团队项目集合后,就要开始创建团队项目了. 进入vs,连接上tfs ...

  3. WCF初探-28:WCF中的并发

    理解WCF中的并发机制 在对WCF并发机制进行理解时,必须对WCF初探-27:WCF中的实例化进行理解,因为WCF中的并发特点是伴随着服务实例上下文实现的.WCF的实例上下文模型可以通过Instanc ...

  4. Struts2 Action下面的Method调用方法

    1. 在struts.xml中加入<constant name="struts.enable.DynamicMethodInvocation" value="tru ...

  5. algorithm -- 选择排序

    选择排序是<导论>第一章课后习题,仿照插入排序,再次运用循环不变式来证明下算法的正确性,C++ 源码: // 交换函数 void swap( int& a, int& b ...

  6. PHPCMS后台登陆路径修改方法(V9版)

    转自:http://hi.baidu.com/geek_cheng/item/b903ebe7b4ac3af9e0a5d4aa?qq-pf-to=pcqq.c2c 最新发布的PHPCMS V9由于采用 ...

  7. 制造行业流程管理的“IPO”思维

    流程管理是企业从流程角度出发,关注流程是否增值的一套管理体系.从认识流程.到建立流程.到管理流程.再到优化流程,企业管理人员要去除不增值和低价值的流程,减少员工犯错误的机会,建立一套卓越的流程体系. ...

  8. 不支持关键字“data source”

    网上大部分都是说data source之间需要插入一个空格或者都是一些低级的拼写错误造成的,但是我没有出现这些情况,是通过把data source改成server解决的,具体config里面的代码如下 ...

  9. web开发流程(传智播客-方立勋老师)

    1.搭建开发环境 1.1 导入项目所需的开发包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar commons-beanutils-1.8.0.jar commons-log ...

  10. ICEM相关

    1,几何体建模不用讲(可以不学,因为通常是其他软件导入)在初始分块前,建立part,为建立边界条件使用(这是部分的定义最重要的作用,所以你可以按照不同的情况来定义,划分网格只是块的工作),所以对于三维 ...