集合
集合相比较与数组的好处:
长度可以任意改变,类型随便。所以可以将集合看成“长度可变,具有多种方法的数组”
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();

639

被折叠的 条评论
为什么被折叠?



