集合
集合相比较与数组的好处:
长度可以任意改变,类型随便。所以可以将集合看成“长度可变,具有多种方法的数组”
1、ArrayList集合
2、Hashtable集合(键值对集合)
3、List泛型集合
4、字典集合
1、ArryList集合
引用命名空间
System.Collection
ArrayList方法
1、添加
2、删除
3、插入
4、反转
5、排序
6、判断是否包含
1、添加
(1)添加单个元素:Add();
——使用Add可以添加数据,并且可以与数组一样使用“下标”(索引)访问数据,使用下标访问的数据是object类型的,必要时需要进行转换,必须满足里式转换原则。
(2)添加集合元素:AddRange();
——AddRange将数组或集合当中的数据批量的一个一个的加进来。
//添加单个元素list.Add(1);list.Add(\"zhang\");list.Add(true);list.Add(\'z\');//添加集合元素list.AddRange(new int[] { 1, 2, 3, 4, 5 });//list.AddRange(list);//添加list本身
2、删除
(1)删除所有元素:Clear();
——删除所有的数据。
(2)删除单个元素,括号里写谁就删谁:Remove(数据);
——删除集合中,与“数据”相同的数据,当集合中不存在这个数据时,直接忽略,方法执行从左至右删除第一个出现的数据,其后数据不考虑
(3)根据下标删除元素:RemoveAt();
——删除指定索引的数据,其后数据一次向前移动,当索引超出后范围后,异常。
(4)根据下标去删除一定范围的元素:RemoveRange();
//清空所有的数据list.Clear();//删除单个元素,括号里写谁就删谁list.Remove(\"zhang\");//根据下标去删除元素list.RemoveAt(0);//根据下标去删除一定范围的元素list.RemoveRange(1, 3);
3、插入
(1)在指定的位置插入一个元素:Insert(位置,值);
(2)在指定位置插入一个集合:InsertRange(位置,集合);
//在指定的位置插入一个元素list.Insert(1, \"shao\");//在指定的位置插入一个集合list.InsertRange(2, new string[] { \"zhang\", \"shao\" });
4、反转
使用Reverse();
//反转list.Reverse();
5、排序
使用Sort();
//排序list.Sort();
6、判断是否包含
使用Contains(数据);
——判断是否包含某个指定的元素
//判断是否包含某个元素list.Add(\"zhang\");if (!list.Contains(\"zhang\")){list.Add(\"zhang\");}else{Console.WriteLine(\"已经存在\");}
全部的代码:
//创建对象ArrayList list = new ArrayList();//添加单个元素list.Add(1);list.Add(\"zhang\");list.Add(true);list.Add(\'z\');//添加集合元素//list.AddRange(new int[] { 1, 2, 3, 4, 5 });//list.AddRange(list);//添加list本身//清空所有的数据//list.Clear();//删除单个元素,括号里写谁就删谁// list.Remove(\"zhang\");//根据下标去删除元素//list.RemoveAt(0);//根据下标去删除一定范围的元素//list.RemoveRange(1, 3);//在指定的位置插入一个元素//list.Insert(1, \"shao\");//在指定的位置插入一个集合//list.InsertRange(2, new string[] { \"zhang\", \"shao\" });//反转//list.Reverse();//排序//list.Sort();//判断是否包含某个指定的元素if (!list.Contains(\"zhang\")){list.Add(\"zhang\");}else{Console.WriteLine(\"已经存在\");}for (int i = 0; i < list.Count; i++){Console.WriteLine(list[i]);}Console.ReadKey();
2、Hashtable集合
又称为键值对集合。
添加数据,都是“键值对”的形式,键值对均是object类型。
键值对中的键就是为了找数据用的,必须提供,不允许提供。(键必须是唯一的)
强转,需要使用里式转换原则。
引用命名空间
System.Collecton
Hashtable方法
1、添加
2、删除
3、判断是否包含
1、添加
(1)添加单个元素:
方法一:Add(键,值);
方法二:ht[键]=值;
其中,方法二可以覆盖掉原先存在的相同的键所赋的值。
//添加数据ht.Add(1, \"zhang\");ht.Add(2, true);ht.Add(3, \'男\');ht.Add(false, \"错误的\");ht[4] = \"新来的\";ht[1] = \"把zhang干掉\";
2、删除
(1)删除集合中所有的元素:Clear();
(2)删除指定键所对应的值(删除单个元素):Remove(键);
//删除集合中的全部元素ht.Clear();//删除指定键所对应的值ht.Remove(3);
3、判断是否包含
使用方法:Contains(键);
if (!ht.Contains(3)){ht[3] = \'男\';}else{Console.WriteLine(\"已经包含这个键值对了\");}
Hashtable集合遍历的方式
使用foreach循环来遍历键值对集合,不能使用for循环来遍历。
语法:
foreach(集合中单个的类型 局部变量名 in 集合对象)
{
循环体;
//循环体中“局部变量”表示集合中遍历的数据
}
foreach (var item in collection)
{
循环体;
}
其中,item表示集合中的项(数据),collection表示这个集合
foreach (var item in ht.Keys){Console.WriteLine(\"键是----{0},值是----{1}\",item,ht[item]);}
全部的代码:
//创建一个键值对集合对象Hashtable ht = new Hashtable();//添加数据ht.Add(1, \"zhang\");ht.Add(2, true);ht.Add(3, \'男\');ht.Add(false, \"错误的\");ht[4] = \"新来的\";ht[1] = \"把zhang干掉\";//删除集合中的全部元素//ht.Clear();//删除指定键所对应的值//ht.Remove(3);if (!ht.Contains(3)){ht[3] = \'男\';}else{Console.WriteLine(\"已经包含这个键值对了\");}foreach (var item in ht.Keys){Console.WriteLine(\"键是----{0},值是----{1}\",item,ht[item]);}Console.ReadKey();
3、List泛型集合
类似于ArrayList集合。
最主要的两点是:
1、集合转数组
2、数组转集合
//集合转数组int[] nums = list.ToArray();List<string> str = new List<string>();string[] str1 = str.ToArray();//数组转集合char[] chs = new char[] { \'c\', \'v\', \'b\' };List<char> listChar = chs.ToList();
其他方法,比如说:添加,删除类似于ArrayList集合
全部代码:
//创建泛型集合对象List<int> list = new List<int>();//添加单个数据list.Add(1);list.Add(2);list.Add(3);list.Add(4);//添加集合数据list.AddRange(new int[] { 5, 6, 7, 8, 9 });list.AddRange(list);//添加本身//集合转数组int[] nums = list.ToArray();List<string> str = new List<string>();string[] str1 = str.ToArray();//数组转集合char[] chs = new char[] { \'c\', \'v\', \'b\' };List<char> listChar = chs.ToList();for (int i = 0; i < list.Count; i++){Console.WriteLine(list[i]);}Console.ReadKey();
4、字典集合
类似于键值对结合。
语法:
循环遍历需要用到foreach
语法:
Dictionary<int, string> dic = new Dictionary<int, string>();
foreach (KeyValuePair<int, string> kv in dic)
{
Console.WriteLine(\”{0}—-{1}\”,kv.Key,kv.Value);
}
Dictionary<int, string> dic = new Dictionary<int, string>();dic.Add(1, \"zhang\");dic.Add(2, \"shao\");dic.Add(3, \"lei\");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();