C#中常用的集合主要分为两类:泛型集合和非泛型集合
使用非泛型集合需要引入命名空间System.Collection
ArrayList----可以根据需要动态增加的数组
Hashtable----用来存储键值对的哈希表
Queue----循环先进先出的队列
Stack-----遵循后进先出的栈
使用泛型集合需要引入命名空间System.Collection.Generic
List<T>--可以根据需要动态增加的数组
Dictionary<Tkey,TValue>---用来存储键值对的哈希表
Queue<T>----遵循先进先出的队列
Stack<T>----遵循后进先出的栈
1.1:ArrayList:其主要应用在当需要进行存储的数据中有多种类型,同时程序也不是太计较性能的得失,因为其要进行装箱和拆箱操作,这个操作非常消耗性能
装箱:就是将值类型的数据打包到引用类型的实例中
拆箱:就是从引用数据中提取值类型
其中的方法代码如下
//1.首先创建对象 ArrayList arr=new ArrayList(); //使用Add()方法添加元素,对元素类型没有限制 arr.Add (12); arr.Add ("1234"); arr.Add (12.7f); //使用 /下标/ 来获取指定位置的元素 Console.WriteLine ("arr[0]="+arr[0]); //获取当前数组的数量 int count=arr.Count; //使用insert()方法向指定下标位置插入元素 arr.Insert(1,"老张"); Console.WriteLine ("arr[1]="+arr[1]); //使用Remove()方法从数组中删除指定元素 arr.Remove("老张"); Console.WriteLine ("arr[1]="+arr[1]); //使用RemoveAt()方法,将指定下标位置的元素删除 arr.RemoveAt(0); Log (arr); //判断指定元素中是否存在当前数组中 bool b=arr.Contains("老王"); if (b) { Console.WriteLine ("老王在数组中"); } else { Console.WriteLine ("老王不在数组中!!!!"); }
1.2:List:设计的程序类型相对要较安全,并且性能要相对较高
//1.首先创建对象 List<string> list=new List<string>(); //使用Add()方法添加元素,只能添加字符串类型的元素 list.Add("123"); list.Add ("778"); //实用[下标]来获取指定位置的元素 Console.WriteLine ("arr[0]="+arr[0]); //获取当前数组中的元素的数目 int count1=arr.Count; //使用insert()方法向指定下标位置插入元素 arr.Insert(1,"老张"); Console.WriteLine ("arr[1]="+arr[1]); //使用Remove()方法从数组中删除指定元素 arr.Remove("老张"); //使用RemoveAr()方法删除指定下标位置的元素 list.RemoveAt(0); Console.WriteLine (list[0]); //Contains()判断指定元素是否存在在当前数组中 bool b1=list.Contains("老王"); if (b1) { Console.WriteLine ("老王在数组中!!!!"); } else { Console.WriteLine ("老王不在数组中!!!!"); } //进行集合的清空 list.Clear (); Console.WriteLine (list.Count);
1.3:字典对象(Dictionary):一般作为聚合统计或者快速使用特征访问
//Dictionary是存储键和值的集合 //Dictionary是无序的,键Key是唯一的 Console.WriteLine (); Console.WriteLine ("Dictionary字典对象的内容:"); //创建一个字典对象,key的类型是string,Value的类型是int类型 Dictionary<string,int> dic = new Dictionary<string, int> (); //Add方法用来添加键值对 dic.Add("laowang",12); dic.Add ("laozhang",12); //从字典中移除键值对 //dic.Remove("laowang"); //清空当前字典 //dic.Clear(); //获取当前字典中的keyValue的个数 int count2=dic.Count; Console.WriteLine ("当前字典中有"+count2+"个KeyValue"); //通过Key获取Value int age=dic["laowang"]; Console.WriteLine (age); //检查字典中是否包含指定的Key bool b2=dic.ContainsKey("xiaowang"); Console.WriteLine (b2); //检查字典中是否包含指定的Value bool b3=dic.ContainsValue(12); Console.WriteLine (b3); //尝试获取指定的key所对应的Value //如果当前字典中包含laowang这个key,那么就获取对应的Value并保存在s里,bb=true //如果当前字典中不包含laowang这个key,那么s=0,bb=false; int s=0; bool bb = dic.TryGetValue ("laowang",out s); Console.WriteLine (bb); Console.WriteLine (s);
1.4:栈:一般栈用在DFS(深度优先遍历)大家可以查一下这个算法不懂得
//栈和队列根据需要的容量自动增长 //栈和队列都允许重复元素 Console.WriteLine ("栈对象的内容:"); Stack<string> ss=new Stack<string>(); int count4=ss.Count; ss.Clear (); bool b4=ss.Contains("老王"); Console.WriteLine (b4); //Push把元素入栈 ss.Push("老王"); ss.Push ("小张"); ss.Push ("小明"); //获取并移除栈中的元素 //Pop把元素出栈,栈中就没有这个元素了 //Pop把元素出栈,其按照的规则是后进先出的原则 string s1=ss.Pop(); Console.WriteLine (s1); string s2 = ss.Pop (); Console.WriteLine (s2); string s3 = ss.Pop (); Console.WriteLine (s3); //无法再次输出了因为栈中已经没有元素了 // string s4 = ss.Pop (); // Console.WriteLine (s4);
1.5:队列:一般用在BFS(广度优先遍历)
Console.WriteLine ("队列内容:"); Queue<string> q = new Queue<string> (); q.Clear (); int count6=q.Count; bool b7=q.Contains("老王"); //向队列中添加元素 q.Enqueue("老王"); q.Enqueue ("老张"); q.Enqueue ("小明"); //获取队列中的元素 string ss1=q.Dequeue(); Console.WriteLine (ss1); string ss2=q.Dequeue(); Console.WriteLine (ss2); string ss3=q.Dequeue(); Console.WriteLine (ss3);
以上就是我为大家总结的一些小知识,希望能帮助到大家,如果有错误的可以写在评论里,大家一起讨论!!!!!!!