确定泛型集合的类型,则里面元素类型随之确定。
泛型集合比数据好处在于:长度可以改变。
命名空间:system.Collections.Generic
创建泛型集合对象
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);
//List泛型集合可以转换为数组
int[] nums = list.ToArray();
//List<string> listStr = new List<string>();
//string[] str = listStr.ToArray();
//数组可以转换为集合
//char[] chs = new char[] { 'c', 'b', 'a' };
//List<char> listChar = chs.ToList();
//for (int i = 0; i < listChar.Count; i++)
//{
// Console.WriteLine(listChar[i]);
//}
List<int> listTwo = nums.ToList();
//for (int i = 0; i < list.Count; i++)
//{
// Console.WriteLine(list[i]);
//}
ArrayList和HashTable目前用的并不多
原因如下:
装箱:就是将值类型转换为引用类型。
拆箱:将引用类型转换为值类型。
看两种类型是否发生了装箱或者拆箱,要看,这两种类型是否存在继承关系。
装箱和拆箱
//int n = 10;
//object o = n;//装箱
//int nn = (int)o;//拆箱
//ArrayList list = new ArrayList();
//List<int> list = new List<int>();
这个循环发生了100万次装箱操作
//Stopwatch sw = new Stopwatch();
00:00:02.4370587
00:00:00.2857600
//sw.Start();
//for (int i = 0; i < 10000000; i++)
//{
// list.Add(i);
//}
//sw.Stop();
//Console.WriteLine(sw.Elapsed);
//Console.ReadKey();
//这个地方没有发生任意类型的装箱或者拆箱
//string str = "123";
//int n = Convert.ToInt32(str);
int n = 10;
IComparable i = n;//装箱
//发生
}
Dictionary;
//Dictionary<int, string> dic = new Dictionary<int, string>();
//dic.Add(1, "张三");
//dic.Add(2, "李四");
//dic.Add(3, "王五");
//dic[1] = "新来的";
//foreach (KeyValuePair<int,string> kv in dic)
//{
// Console.WriteLine("{0}---{1}",kv.Key,kv.Value);
//}
//foreach (var item in dic.Keys)
//{
// Console.WriteLine("{0}---{1}",item,dic[item]);
//}
//Console.ReadKey();
//统计 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;
}
if (dic.ContainsKey(str[i]))
{
dic[str[i]]++;
}
else {
dic[str[i]] = 1;
}
}
foreach (KeyValuePair<char, int> kv in dic)
{
Console.WriteLine("{0}chuxianle{1}",kv.Key,kv.Value);
}
泛型集合比数据好处在于:长度可以改变。
命名空间:system.Collections.Generic
创建泛型集合对象
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);
//List泛型集合可以转换为数组
int[] nums = list.ToArray();
//List<string> listStr = new List<string>();
//string[] str = listStr.ToArray();
//数组可以转换为集合
//char[] chs = new char[] { 'c', 'b', 'a' };
//List<char> listChar = chs.ToList();
//for (int i = 0; i < listChar.Count; i++)
//{
// Console.WriteLine(listChar[i]);
//}
List<int> listTwo = nums.ToList();
//for (int i = 0; i < list.Count; i++)
//{
// Console.WriteLine(list[i]);
//}
ArrayList和HashTable目前用的并不多
原因如下:
装箱:就是将值类型转换为引用类型。
拆箱:将引用类型转换为值类型。
看两种类型是否发生了装箱或者拆箱,要看,这两种类型是否存在继承关系。
装箱和拆箱
//int n = 10;
//object o = n;//装箱
//int nn = (int)o;//拆箱
//ArrayList list = new ArrayList();
//List<int> list = new List<int>();
这个循环发生了100万次装箱操作
//Stopwatch sw = new Stopwatch();
00:00:02.4370587
00:00:00.2857600
//sw.Start();
//for (int i = 0; i < 10000000; i++)
//{
// list.Add(i);
//}
//sw.Stop();
//Console.WriteLine(sw.Elapsed);
//Console.ReadKey();
//这个地方没有发生任意类型的装箱或者拆箱
//string str = "123";
//int n = Convert.ToInt32(str);
int n = 10;
IComparable i = n;//装箱
//发生
}
Dictionary;
//Dictionary<int, string> dic = new Dictionary<int, string>();
//dic.Add(1, "张三");
//dic.Add(2, "李四");
//dic.Add(3, "王五");
//dic[1] = "新来的";
//foreach (KeyValuePair<int,string> kv in dic)
//{
// Console.WriteLine("{0}---{1}",kv.Key,kv.Value);
//}
//foreach (var item in dic.Keys)
//{
// Console.WriteLine("{0}---{1}",item,dic[item]);
//}
//Console.ReadKey();
//统计 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;
}
if (dic.ContainsKey(str[i]))
{
dic[str[i]]++;
}
else {
dic[str[i]] = 1;
}
}
foreach (KeyValuePair<char, int> kv in dic)
{
Console.WriteLine("{0}chuxianle{1}",kv.Key,kv.Value);
}