标签:
对于ArrayList集合和Hashtable集合都会在取值和赋值的过程中往往都会发生拆装箱操作,会影响性能,所以一般都不很少用这两个集合。
但是这个好的东西没有会影响性能,肯定会有替代品的撒,那么就有了List泛型集合和Dictionary泛型字典
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太像了,所以这里就不多说了
这个也是在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赋值
标签:
原文地址:http://blog.csdn.net/nextstand/article/details/51357408