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

C#集合2

时间:2016-05-12 18:23:09      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:

对于ArrayList集合和Hashtable集合都会在取值和赋值的过程中往往都会发生拆装箱操作,会影响性能,所以一般都不很少用这两个集合。
但是这个好的东西没有会影响性能,肯定会有替代品的撒,那么就有了List泛型集合和Dictionary泛型字典

——List泛型集合

List泛型集合比ArrayList集合的优点就是定义了数据类型,从而不会再取值和赋值的过程中不容易产生拆箱和装箱的操作,其他的操作和ArrayList集合差不多

语法:
List<集合中需要存储的数据类型> list = new List<集合中需要存储的数据类型>();

例子:

//定义一个名为list的泛型集合
List<int> list = new List<int>();

泛型集合和数组之间可以相互转换
ToArray()——List泛型集合转换成数组转成的数组类型就是集合的数据类型
ToList()——将数组转换成List集合

一个例子展示往泛型集合中添加数据,其实和ArrayList是一样的,知识泛型集合有数据类型限制

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.AddRange(new int[] { 1, 2, 3, 4, 5, 6 });
list.AddRange(list);//往集合中添加自身
//集合中的数据:1 2 3 4 5 6  1 2 3 4 5 6

由于泛型集合和ArrayList太像了,所以这里就不多说了

——Dictionary泛型字典

这个也是在Hasntable的基础上进行了改进,同样是键值对的形式储存数据,但是Dictionary规定了键和值的数据类型

语法:
Dictionary<键数据类型, 值数据类型> dic = new Dictionary<键数据类型, 值数据类型>();

语法例子

//键位char类型,值为int类型
Dictionary<char, int> dic = new Dictionary<char, int>();

它的遍历和Hashtable一样,都是foreach循环,这里介绍一种洋气的写法,按照键值对的形式遍历,可以直接取到键值对,而不是单一的键或者值

Dictionary<int, string> Dic = new Dictionary<int, string>();
foreach (KeyValuePair<int,string> item in Dic)
{
    //item就指代键值对了
    //item.Key就是键
    //item.Value也就是值了
}

其实如果掌握了ArrayList和Hashtable之后List泛型集合和Dictionary泛型字典就很简单;ArrayList和Hashtable的详细中可以看看集合的方法

最后以一个例子结束吧

//统计 Welcome to china中每个字符出现的次数 不考虑大小写
 string str = "Welcome to China";
 Dictionary<char, int> dic = new Dictionary<char, int>();
 for (int i = 0; i < str.Length; i++)
     {
         if (str[i] == ‘ ‘)
        {
             continue;
         }
         //如果dic已经包含了当前循环到的这个键 
         if (dic.ContainsKey(str[i]))
         {
             //值再次加1
             dic[str[i]]++;
         }
         else//这个字符在集合当中是第一次出现
         {
             dic[str[i]] = 1;
         }
     }
foreach (KeyValuePair<char,int> kv in dic)
       {
         Console.WriteLine("字母{0}出现了{1}次",kv.Key,kv.Value);
        }
Console.ReadKey();
//定义一个泛型字典,字符作为键,次数作为值
//空格不算,第一次出现则把字符作为键值赋值为1
//如果集合中有该字符,则对该字符对应的值重新+1赋值

C#集合2

标签:

原文地址:http://blog.csdn.net/nextstand/article/details/51357408

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