码迷,mamicode.com
首页 > Windows程序 > 详细

C#常用的几种集合和使用范围

时间:2018-02-22 23:11:53      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:16px   哈希表   post   log   打包   引入   对象   一个   广度   

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);

 

以上就是我为大家总结的一些小知识,希望能帮助到大家,如果有错误的可以写在评论里,大家一起讨论!!!!!!!

C#常用的几种集合和使用范围

标签:16px   哈希表   post   log   打包   引入   对象   一个   广度   

原文地址:https://www.cnblogs.com/baosong/p/8460372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!