C# list集合 重复元素 索引_C# 集合

本文介绍了C#中的集合类,包括非泛型集合和泛型集合的特点及应用。详细讲解了ArrayList、Hashtable、List<T>和Dictionary<TKey, TValue>等集合类的使用方法,以及foreach循环在集合遍历中的优势。

数组可以保存多个兑现个,但是某些情况下无法确定到底需要保存多少个对象,由于数组的长度不可变,因此数组将不再适用。

为了保存这些数目不确定的对象C#提供了一系列特殊的类,这些类可以储存任意类型的对象,并且长度可变,统称为集合

集合分类:可以分为非泛型集合和泛型集合,二者均间接实现了IEnumerble接口

非泛型集合:

非泛型集合位于System.Collection命名空间,它可以存储多种类型的对象,其中在常用的是ArrayList集合和Hashtable集合。

泛型集合:

泛型集合位于System.Collection.Generic命名空间,它只能存储一种类型的对象,其中最常见用的是List<T>泛型集合和Dictionary<TKey,TValue>泛型集合。

非泛型集合类ArrayList:

ArrayList集合就像是一个杂货铺,可以容纳不同类型的对象,例如:可以将int,string,object等类型对象同时加入到ArrayList集合中,ArrayList集合提供额一系列添加,删除,移动,修改,查询元素等操作方法。

4d79385e7714c1b8565cc7fe524e7f28.png

它还有一个属性:Capacity表示集合容量,它的计算方法和集合长度有关,它容量是4的倍数,比如集合的长度是3,它的容量就是4,比如长度是6,它的容量就是8。

using 

Foreach循环

虽然for循环可以用于遍历集合中的元素,但写法上比较繁琐,为了简化书写,C#提供了foreach循环

Foreach循环遍历集合时,无需循环条件

Foreach 循环语法格式:

Foreach(var item in collection)

{

执行语句;

}

Item变量用于储存每次遍历的元素(默认情况下item为var类型),in为关键字,collection为被遍历的集合

说明:

Foreach循环的次数是由元素的个数决定的,每次循环时,foreach 中都是通过变量将当前循环中的元素记住,从而将集合中的元素遍历输出,实际上,foreach不仅可以遍历集合,还可以遍历数组,可以说foreach循环专门用于变量集合和数组的循环语句。

注意:

Foreach循环只能对遍历到的元素进行读操作,且只能单向遍历,也就是一个元素在foreach循环中只能被访问一次,所以在遍历集合中优先选择foreach,如果需要修改或者需要多次访问某个元素时,在考虑使用for循环

Hashtable集合 非泛型集合类

在ArrayList集合中查找某个元素时,是从索引位置为0的元素开始逐一进行比对的,这就好像一本没有目录的字典中查找某个汉字一样,这样查询的效率极低,为此C#提供了Hashtable集合,该集合又被称为键值对集合,所谓的键就类似于字典中的目录,值就类似于字典中的具体的信息,键与值是对应关系,通过唯一的键能找到对应的值,因此Hashtable这种特性大大提高了查询效率

常用方法

748a401a114d9776fedd8b525066ed31.png
using 

注意:在Hashtable集合中键和值的默认类型都是object,因此可以向键和值中添加任意类型的对象,在遍历Hashtable集合时,除了通过键来获取对应的值外,还可以直接遍历集合的值或者集合对象DictionaryEntry

List<T>泛型集合

ArrayList集合与Hashtable集合可以存储多种类型的元素,由于集合中的元素类型不一致,在很多情况下,使用foreach循环获取集合中的元素时,需要对他们进行强制类型转换,这种操作大大降低了程序的执行效率,为了解决这个问题,C#提出了泛型集合概念,泛型集合相当于集合制定了某个限制条件,这个条件使集合中只能存储一种类型的元素

List<T>是一种常用的泛型集合,T指某种数据类型,如int,string等,该集合不仅具备ArrayList集合的功能,而且还可以保证List<T>集合只能添加同类型元素,不会出现类型转换的问题

Max()最大值 Min()最小值 Sum()求和

using 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值