C# 学习笔记——集合

集合

集合相比较与数组的好处:
长度可以任意改变,类型随便。所以可以将集合看成“长度可变,具有多种方法的数组”

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();

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值